首页 > 解决方案 > 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')

标签: pythonmatplotliblabel

解决方案


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 是最高点。正如你所说,你几乎只需要这两个,你现在可以在这段代码的最后一行指定它们,你就完成了。


推荐阅读