matplotlib - 如何仅显示每个第 n 个轴标签
问题描述
我matplotlib
用来制作散点图,x 轴标签一起运行到难以辨认的程度。以下是所有相关代码:
plt.xticks(rotation=30)
plt.scatter(x,y)
plt.show()
x
和y
分别是 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个标签执行一次;将其更改为您需要的任何内容。
解决方案
推荐阅读
- c# - C# android手机到tcp服务器,连接被远程主机强行关闭
- node.js - openapi3的yaml文件中如何使用node.js实现multipart/form-data?
- php - 使用 FPDF 在不同的框中显示每个数据
- java - Gradle 在无限状态下构建,但仅限于 intelliJ 调试模式
- scala - 如何使用 flatmap 实现流的扁平化
- javascript - 如何在表中设置为默认值?
- proxy - Envoy 边缘代理如何记录每台主机的请求数
- c# - 检查字符串中的字母数字和特殊字符
- java - 如何在 GUI (java) 中显示 void 函数?
- swift - 解码 RealmSwift 类中的可选对象列表