我真的不明白为什么在你的例子中使用MultipleLocator很困难.
在代码中添加这些行
from matplotlib.ticker import MultipleLocator, FormatStrFormatter
majorLocator = MultipleLocator(5)
majorFormatter = FormatStrFormatter('%d')
minorLocator = MultipleLocator(1)
ax.xaxis.set_major_locator(majorLocator)
ax.xaxis.set_major_formatter(majorFormatter)
ax.xaxis.set_minor_locator(minorLocator)
你会得到这个图像,我明白这是你想要的(不是吗?):
如果您不希望刻度显示在数据范围下方,请使用FixedLocator手动定义刻度:
from matplotlib.ticker import FixedLocator
majorLocator = FixedLocator(np.linspace(20,40,5))
minorLocator = FixedLocator(np.linspace(19,41,23))
你会得到这个图像: