如何完全移除Matplotlib Colorbar的所有刻度?
彻底隐藏Matplotlib Colorbar所有刻度的解决方法
我想设置Matplotlib的Colorbar不显示任何形式的刻度,尝试了cb.ax.tick_params(size=0)和cb.set_ticks([])两种方法,但Colorbar右侧仍有微小的刻度痕迹。以下是可复现问题的代码:
第一段复现代码
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) # 尝试的处理代码 cb.set_ticks([]) plt.show()
自包含复现代码
import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np 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) # 尝试的处理代码 cb.set_ticks([]) plt.show()
解决方法
之前的操作仅处理了主刻度,未覆盖次要刻度,导致残留微小痕迹。只需添加一行代码,同时关闭主、次刻度的显示:
cb.ax.tick_params(axis='y', which='both', left=False, labelleft=False)
也可以整合所有操作,确保彻底清除所有刻度相关元素:
cb.set_ticks([]) cb.ax.set_yticklabels([]) cb.ax.tick_params(axis='y', which='both', size=0, labelleft=False, left=False)
执行后即可完全隐藏Colorbar上的所有刻度及痕迹。
内容的提问来源于stack exchange,提问作者an offer can't refuse
相关产品推荐
相关产品推荐

