如何强制 Y 轴只使用整数

我正在使用 matplotlib.pyplot 模块绘制一个直方图,我想知道如何强制 y 轴标签只显示整数(例如0、1、2、3等)而不显示小数(例如0)。,0.5,1.,1.5,2.等)。

I'm looking at the guidance notes and suspect the answer lies somewhere around Matplotlib.pplot.ylim but so far I can only find stuff that sets the minimum and maximum y-axis values.

def doMakeChart(item, x):
if len(x)==1:
return
filename = "C:\Users\me\maxbyte3\charts\\"
bins=logspace(0.1, 10, 100)
plt.hist(x, bins=bins, facecolor='green', alpha=0.75)
plt.gca().set_xscale("log")
plt.xlabel('Size (Bytes)')
plt.ylabel('Count')
plt.suptitle(r'Normal Distribution for Set of Files')
plt.title('Reference PUID: %s' % item)
plt.grid(True)
plt.savefig(filename + item + '.png')
plt.clf()
150001 次浏览

If you have the y-data

y = [0., 0.5, 1., 1.5, 2., 2.5]

可以使用此数据的最大值和最小值创建此范围内的自然数列表。比如说,

import math
print range(math.floor(min(y)), math.ceil(max(y))+1)

yields

[0, 1, 2, 3]

然后,您可以使用 matplotlib.pyplot.yticks设置 y 刻度标记位置(和标签) :

yint = range(min(y), math.ceil(max(y))+1)


matplotlib.pyplot.yticks(yint)

这对我有用:

import matplotlib.pyplot as plt
plt.hist(...


# make the y ticks integers, not floats
yint = []
locs, labels = plt.yticks()
for each in locs:
yint.append(int(each))
plt.yticks(yint)

还有一种方法:

from matplotlib.ticker import MaxNLocator


ax = plt.figure().gca()
ax.yaxis.set_major_locator(MaxNLocator(integer=True))