Matplotlib中如何为单独生成的Colorbar添加自定义刻度标签?
解决Matplotlib独立Colorbar刻度标签设置问题
你的核心问题是误用了方法调用方式——直接把标签列表赋值给set_ticklabels/set_yticklabels属性,而非调用这些方法并传入参数。以下是修正后的代码:
import matplotlib.pyplot as plt import matplotlib as mpl fig, ax = plt.subplots(figsize=(3,8)) cmap = mpl.cm.inferno bounds = [0,1,2,3,4,5] norm = mpl.colors.BoundaryNorm(bounds, cmap.N) # 生成colorbar并保存实例 mycb = fig.colorbar( mpl.cm.ScalarMappable(cmap=cmap, norm=norm), ticks=[0.5,1.5,2.5,3.5,4.5], cax=ax) # 正确调用方法设置刻度标签 mycb.set_ticklabels(["A", "B", "C", "D", "E"]) # 也可通过colorbar的轴对象设置,效果一致 # mycb.ax.set_yticklabels(["A", "B", "C", "D", "E"]) plt.show()
关键说明
set_ticklabels()是Colorbar对象的方法,必须传入标签列表作为参数,不能直接赋值给该属性。- 通过
mycb.ax获取colorbar对应的轴对象,调用set_yticklabels()也能实现相同效果。 - 要保证
ticks参数的数量和标签列表长度一致,避免出现刻度与标签不匹配的问题。
内容的提问来源于stack exchange,提问作者Whitehot
相关产品推荐
相关产品推荐

