You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何完全移除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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:12:45