更改matplotlib中子图中的nticks

时间:2018-01-25 21:52:39

标签: python matplotlib

为什么x和y轴上的刻度数不会减少到3?

import numpy as np
import matplotlib.pyplot as plt

fig,ax=plt.subplots(nrows=4,ncols=3)
for n in range(0,4):
    for f in range(0,3):
        ax[n,f].plot(range(10), range(10,20))
        ax[n,f].locator_params(axis='x', nticks=3)
        ax[n,f].locator_params(axis='y', nticks=3)

fig.savefig('not_3_ticks.png')

我留下了下图:not 3 ticks

2 个答案:

答案 0 :(得分:2)

这也有效:

import numpy as np
import matplotlib.pyplot as plt

fig,ax = plt.subplots(nrows=4,ncols=3)

for n in range(0,4):
    for f in range(0,3):
        ax[n,f].plot(range(10), range(10,20))
        ax[n,f].xaxis.set_major_locator(plt.MaxNLocator(3))
        ax[n,f].yaxis.set_major_locator(plt.MaxNLocator(3))

plt.plot()
plt.show()
fig.savefig('yes_3_ticks.png')

enter image description here

答案 1 :(得分:1)

locator_params(axis='x', nticks=3)未按预期运行的原因是nticks不是正在使用的matplotlib.ticker.AutoLocator的有效参数。

来自documentation

  

通常,人们可能希望减少最大数量   当绘制小的时候,刻度并使用紧束缚   子图,例如::

ax.locator_params(tight=True, nbins=4)

因此请nticks替换nbins