我正在尝试减少子图中轴刻度的数量(每个轴的值不同,因此我无法手动设置刻度),但其他答案如this或this不工作。 我创建图形的语法是标准的,如下所示:
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?
答案 0 :(得分:1)
问题在于:
ax = plt.locator_params(nbins=4, axis='y')
locator_params
未返回Axes
个实例(事实上它并未返回任何内容),因此在此行中您将ax
重新分配为None
我认为您想将其更改为:
ax.locator_params(nbins=4, axis='y')
然后它应该都可以正常工作。