如何在颜色条中不显示任何"刻度”?

1 投票
2 回答
56 浏览
提问于 2025-04-14 17:59

我想把颜色条设置成没有任何刻度线。我搜索了一下,并在两个地方设置了刻度参数。但是,右边的边框上还是有一些小刻度线。

cb = mpl.colorbar.ColorbarBase(ax2, cmap=cmap, norm=norm, spacing='proportional', boundaries=bounds, format='%.1f')

ax2.set_xlabel('t', size=12)
cb.ax.tick_params(size=0)  # these two lines are my searching effort
cb.set_ticks([])
plt.show()

在这里输入图片描述

编辑

这里有一段完整的代码,还是有一些小刻度线。

fig, ax = plt.subplots(1, 1, figsize=(0.05, 6))
tmax=5
tmin=-5
color_num=6
bounds = np.linspace(tmin, tmax, color_num+1)
norm = mpl.colors.BoundaryNorm(bounds, color_num)
cmap = plt.cm.tab20
cmaplist = [cmap(i) for i in range(color_num)]
cmap = mpl.colors.LinearSegmentedColormap.from_list('custom map', cmaplist, color_num)
cb = mpl.colorbar.ColorbarBase(ax, cmap=cmap, norm=norm, spacing='proportional')

cb.ax.tick_params(size=0)  # these two lines are my searching effort
cb.set_ticks([])
plt.show()

在这里输入图片描述

2 个回答

0

创建一个没有刻度的颜色条:

cb = mpl.colorbar.ColorbarBase(ax, cmap=cmap, norm=norm, 
                               ticks = [],  spacing='proportional')

分段颜色条,没有刻度

1

看起来这些小刻度是通过 cb.set_ticks([]) 生成的,当没有指定标签时(我使用的是 matplotlib 3.7.3)。

虽然这更像是个变通办法,而不是解决方案,但可以通过设置 Axes.tick_params 来隐藏刻度。实际上,可以把刻度和标签的大小调小,并把它们的颜色设置成和图背景一样,这样就看不见了。
要做到这一点:

cb.ax.tick_params(size=0,                   # tick size
                  labelsize=0,              # label size
                  colors=ax.get_facecolor() # tick and labels color
                  )

这样做的结果是

隐藏刻度的颜色条

撰写回答