我的图表上有太多的刻度,它们相互碰撞。

如何减少蜱虫的数量?

例如,我有蜱:

1E-6, 1E-5, 1E-4, ... 1E6, 1E7

我只想:

1E-5, 1E-3, ... 1E5, 1E7

我尝试过使用LogLocator,但我还没有弄清楚这一点。


当前回答

或者,如果你想简单地设置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)

其他回答

对于轴对象,有一个set_ticks()函数。

要解决刻度的自定义和外观问题,请参阅matplotlib网站上的刻度定位器指南

ax.xaxis.set_major_locator(plt.MaxNLocator(3))

将x轴上的tick总数设置为3,并将它们均匀地分布在轴上。

还有一个关于这个的很好的教程

如果你想要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。您可以随心所欲地更改刻度数。

或者,如果你想简单地设置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)

Xticks函数与range函数自动迭代

Start_number = 0

End_number = len(你拥有的数据)

Step_number =从开始到结束要跳过多少次

旋转= 90度倾斜有助于长滴答

plt.xticks(range(start_number,end_number,step_number),rotation=90)