matplotlib locator_params或set_major_locator不工作

时间:2016-11-10 07:59:05

标签: python matplotlib

我正在尝试减少子图中轴刻度的数量(每个轴的值不同,因此我无法手动设置刻度),但其他答案如thisthis不工作。 我创建图形的语法是标准的,如下所示:

fig = plt.figure(figsize=(7,9))
ax = fig.add_subplot(8,2,i+1) # I am plotting in a much larger loop, but I don't think there is anything wrong with the loop, because everything else (axis limits, labels, plotting itself...) works fine.

为了减少yticks的数量,我试过

ax = plt.locator_params(nbins=4, axis='y')

引发了错误TypeError: set_params() got an unexpected keyword argument 'nbins'

我试过

ax.yaxis.set_major_locator(plt.MaxNLocator(4))

给出了错误AttributeError: 'NoneType' object has no attribute 'yaxis'

我不明白为什么我的子图被认为是NoneType。我怀疑这是问题的核心,但我看到的所有例子都有相同的结构,即

fig = plt.figure()
ax = fig.add_subplot(111)
ax.yaxis.set_major_locator(plt.MaxNLocator(4))

它应该有效。那么为什么我的斧头是NoneType?

1 个答案:

答案 0 :(得分:1)

问题在于:

ax = plt.locator_params(nbins=4, axis='y')

locator_params未返回Axes个实例(事实上它并未返回任何内容),因此在此行中您将ax重新分配为None

我认为您想将其更改为:

ax.locator_params(nbins=4, axis='y')

然后它应该都可以正常工作。