python - Matplotlib:当没有实际标签时如何隐藏/删除颜色条的刻度?
问题描述
我目前的Colorbar
标签太多:
我几乎只需要第一个和最后一个标签,因此想删除所有其他标签。常见的答案是简单的[label.set_visible(False) for label in ax.xaxis.get_ticklabels()]
,但ax.xaxis.get_ticklabels()
对我来说不包含任何内容。我怎样才能将任何打印的内容设置为不可见?我的(缩写)代码:
fig, ax = plt.subplots(1, 1, figsize=(10, 10))
cmap = plt.cm.jet
cmaplist = [cmap(i) for i in range(cmap.N)]
cmap = mpl.colors.LinearSegmentedColormap.from_list('Custom cmap', cmaplist, cmap.N)
bounds = np.linspace(0, numColors, numColors+1)
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)
tags = [], [], []
for i, list in enumerate(listPerColor):
tags += [i] * len(list)
plt.scatter(xs, ys, c=tags, cmap=cmap, norm=norm)
ax = fig.add_axes([0.9, 0.125, 0.03, 0.7552])
cb = mpl.colorbar.ColorbarBase(ax, cmap=cmap, norm=norm, spacing='proportional',
ticks=bounds+0.5, boundaries=bounds, format='%1i')
cb.ax.set_ylabel('Generation', size=12)
plt.savefig('graph.pdf')
解决方案
ax.xaxis.get_ticklabels()
您没有任何东西的原因是因为您的颜色条是垂直的。您可以调整代码并通过明确指定位置来仅指定所需的刻度标签。下面的代码可能会对您有所帮助,
# your code as it is
ax = fig.add_axes([0.9, 0.125, 0.03, 0.7552])
custom_ticks = [-1, 1]
# changed the ticks parameter to the above variable
cb = mpl.colorbar.ColorbarBase(ax, cmap=cmap, norm=norm, spacing='proportional',
ticks=custom_ticks, boundaries=bounds, format='%1i')
# set the labels to their ticks
# assuming numColors is your upper label and 0 is your lower label
cb.ax.set_yticklabels([0, numColors])
#your code as it goes
小说明: 这里,custom_ticks 是你的刻度的位置。纵向上,-1 是最低点,1 是最高点。正如你所说,你几乎只需要这两个,你现在可以在这段代码的最后一行指定它们,你就完成了。
推荐阅读
- javascript - 如何解决错误“this.props.myFunction”不是反应中的函数?
- mongodb - 带有 graphql 的 mongoose.populate() 无法执行“无限”查询
- typescript - ion-datetime - 从出生日期计算年龄
- ios - 如何在 Facebook 嵌入式视频中为 WKWebView 在 Objective-C 中设置“playsinline = 1”
- java - 未考虑 Maven 依赖项管理
- ios - 如何将简单(非主题)UTF-8 图标放在屏幕上?
- deployment - 为什么滚动更新部署甚至缩小副本集时会出现停机时间
- php - 如何在php中将最后两个数组元素合并为一个数组
- python - 为什么 s[0:4:-1] 在 Python 中什么也不返回?
- powerbi - 从日期 Powerbi 获取当前月份和年份