我正在尝试减少子图中的轴刻度数(每个轴都有不同的值,因此我无法手动设置刻度),但是诸如此或此之类的其他答案不起作用。我创建图形的语法是标准的,如下所示:
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.
Run Code Online (Sandbox Code Playgroud)
为了减少 yticks 的数量,我尝试过
ax = plt.locator_params(nbins=4, axis='y')
Run Code Online (Sandbox Code Playgroud)
这引发了错误TypeError: set_params() got an unexpected keyword argument 'nbins'
我尝试过
ax.yaxis.set_major_locator(plt.MaxNLocator(4))
Run Code Online (Sandbox Code Playgroud)
这给出了错误AttributeError: 'NoneType' object has no attribute 'yaxis'
我不明白为什么我的子图被认为是 NoneType。我怀疑这是问题的核心,但我看到的所有示例都具有相同的结构,即
fig = plt.figure()
ax = fig.add_subplot(111)
ax.yaxis.set_major_locator(plt.MaxNLocator(4))
Run Code Online (Sandbox Code Playgroud)
它应该有效。那么为什么我的斧头是 NoneType 呢?
问题是这一行:
ax = plt.locator_params(nbins=4, axis='y')
Run Code Online (Sandbox Code Playgroud)
locator_params不返回Axes实例(实际上它不返回任何内容),因此在这一行中您将重新分配ax为 be None。
我想你想把它改成:
ax.locator_params(nbins=4, axis='y')
Run Code Online (Sandbox Code Playgroud)
然后一切应该都可以正常工作。