如何仅显示每第n个轴标签。

12 浏览
0 Comments

如何仅显示每第n个轴标签。

我正在使用matplotlib制作散点图,但是x轴的标签太过密集,导致无法辨认。以下是相关代码:

plt.xticks(rotation=30)
plt.scatter(x,y)
plt.show()

xy分别是x轴和y轴的值列表。

这个Stack Overflow的帖子(How to prevent x-axis labels from overlapping)也提出了同样的问题,但是如果有任何答案,我没能找到。

这个Stack Overflow的帖子(Cleanest way to hide every nth tick label in matplotlib colorbar?)在颜色条的上下文中提出了类似的问题。所有看起来对他人有效的回答都是以下形式:

for label in cbar.ax.xaxis.get_ticklabels()[::2]:
    label.set_visible(False)

或者

plt.setp(cbar.ax.get_xticklabels()[::2], visible=False)

其中cbar是提问者的颜色条对象。每次我试图将这些解决方案应用到我的情况时,例如

plt.xticks(rotation=30)
plot = plt.scatter(x,y)
plt.setp(plot.get_xticklabels()[::2], visible=False)
plt.show()

我会遇到错误,例如

AttributeError: 'PathCollection' object has no attribute 'get_xticklabels'.

类似上面的,如果我尝试plot.ax.get_xticklabels(),我会遇到AttributeError: 'PathCollection' object has no attribute 'ax'等错误。

如何仅显示每个第n个轴标签?

0
0 Comments

问题的原因是需要显示特定间隔的坐标轴标签。解决方法是首先将所有标签设置为不可见,然后将特定间隔的标签设置为可见。具体的代码如下所示:

plot = plt.scatter(x, y)
plt.setp(plot.axes.get_xticklabels(), visible=False)
plt.setp(plot.axes.get_xticklabels()[::N], visible=True)

其中,`N`代表需要显示的间隔数,可以根据实际需要进行调整。以上代码将每隔N个标签设置为可见。

0