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

wn9m85ua  于 2023-03-09  发布在  其他
关注(0)|答案(1)|浏览(118)

我正在使用matplotlib做散点图,x轴标签连在一起,以至于难以辨认。以下是所有相关代码:

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

xy分别是x轴值和y轴值的列表。
这篇SO文章(How to prevent x-axis labels from overlapping)问了同样的问题,但是如果那里有答案的话,我也无法梳理出来。
这篇SO文章(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是asker的colorbar对象。例如,每次我试图使这些解决方案适应我的情况时

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个轴标签?

cs7cruho

cs7cruho1#

这起了作用:首先,将所有标签设置为不可见,然后使每N个标签可见。

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

以上每5个标签做一次;把它改成你想要的。
此答案以edit的形式发布,针对CC BY-SA 4.0下OP PiotrChernin的问题:如何仅显示每隔n个轴的标签。

相关问题