我的图表上有太多的刻度,它们相互碰撞。
如何减少蜱虫的数量?
例如,我有蜱:
1E-6, 1E-5, 1E-4, ... 1E6, 1E7
我只想:
1E-5, 1E-3, ... 1E5, 1E7
我尝试过使用LogLocator,但我还没有弄清楚这一点。
我的图表上有太多的刻度,它们相互碰撞。
如何减少蜱虫的数量?
例如,我有蜱:
1E-6, 1E-5, 1E-4, ... 1E6, 1E7
我只想:
1E-5, 1E-3, ... 1E5, 1E7
我尝试过使用LogLocator,但我还没有弄清楚这一点。
当前回答
如果你想要10个嘀嗒:
y轴:ax.set_yticks (ax.get_yticks () [:: len (ax.get_yticks ()) / / 10])
x轴:ax.set_xticks (ax.get_xticks () [:: len (ax.get_xticks ()) / / 10])
这只是获取你的tick,并选择列表中的每10个,并将其设置回你的tick。您可以随心所欲地更改刻度数。
其他回答
对于轴对象,有一个set_ticks()函数。
或者,如果你想简单地设置tick的数量,同时允许matplotlib定位它们(目前仅使用MaxNLocator),有pyplot.locator_params,
pyplot.locator_params(nbins=4)
你可以在这个方法中指定特定的轴,如下所示,默认是:
# To specify the number of ticks on both or any single axes
pyplot.locator_params(axis='y', nbins=6)
pyplot.locator_params(axis='x', nbins=10)
当使用日志尺度时,可以使用以下命令确定主要刻度的数量
import matplotlib.pyplot as plt
....
plt.locator_params(numticks=12)
plt.show()
设置为numticks的值决定要显示的轴刻度数。
感谢@bgamari介绍locator_params()函数的帖子,但是当使用日志尺度时,nticks参数抛出错误。
如果你想要10个嘀嗒:
y轴:ax.set_yticks (ax.get_yticks () [:: len (ax.get_yticks ()) / / 10])
x轴:ax.set_xticks (ax.get_xticks () [:: len (ax.get_xticks ()) / / 10])
这只是获取你的tick,并选择列表中的每10个,并将其设置回你的tick。您可以随心所欲地更改刻度数。
如果有人仍然在搜索结果中看到这一页:
fig, ax = plt.subplots()
plt.plot(...)
every_nth = 4
for n, label in enumerate(ax.xaxis.get_ticklabels()):
if n % every_nth != 0:
label.set_visible(False)