首页 > 解决方案 > 如何仅显示每个第 n 个轴标签

问题描述

matplotlib用来制作散点图,x 轴标签一起运行到难以辨认的程度。以下是所有相关代码:

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

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

这个 SO 帖子(matplotlib:如何防止 x 轴标签相互重叠)提出了同样的问题,但如果那里有答案,我就无法梳理出来。

这篇 SO 帖子(在 matplotlib colorbar 中隐藏每个第 n 个刻度标签的最清洁方法?)在颜色条的上下文中提出了类似的问题。所有似乎对人们有用的回应都是这种形式

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

编辑这行得通:首先,将所有标签设置为不可见,然后使每 N 个标签可见

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

以上每5个标签执行一次;将其更改为您需要的任何内容。

标签: matplotlib

解决方案


推荐阅读