如何在颜色条中不显示任何"刻度”?
我想把颜色条设置成没有任何刻度线。我搜索了一下,并在两个地方设置了刻度参数。但是,右边的边框上还是有一些小刻度线。
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 个回答
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
)
这样做的结果是