如何在Matplotlib中创建指定样式的自定义颜色条?
用Matplotlib创建三段式纯色颜色条
需求:创建一个水平颜色条,包含红色、青色、深绿色三个等宽的纯色块,数值范围对应3.5到4.5。
原代码的分段逻辑有误,修正后的实现如下:
import matplotlib.pyplot as plt from matplotlib.colors import LinearSegmentedColormap from matplotlib.cm import ScalarMappable from matplotlib.colors import Normalize # 定义三段式纯色映射:0-1/3为红色,1/3-2/3为青色,2/3-1为深绿色 colors = ['red', 'cyan', 'darkgreen'] cmap = LinearSegmentedColormap.from_list( 'custom_colormap', [(0.0, colors[0]), (1/3, colors[0]), (1/3, colors[1]), (2/3, colors[1]), (2/3, colors[2]), (1.0, colors[2])] ) # 创建颜色映射对应的数值映射,范围3.5到4.5 sm = ScalarMappable(norm=Normalize(vmin=3.5, vmax=4.5), cmap=cmap) # 绘制水平颜色条,设置刻度在色块分界处 plt.figure(figsize=(6, 1)) cb = plt.colorbar(sm, orientation='horizontal', ticks=[3.5, 4.0, 4.5], extend='neither') cb.set_label('') plt.show()
关键修正说明:
- 颜色映射的分段点调整为
1/3和2/3,确保三个色块等宽覆盖0-1的归一化范围,对应数值3.5-4.0、4.0-4.5的区间。 - 刻度设置为
[3.5, 4.0, 4.5],让刻度线精准对应色块的边界。 - 调整figure宽度为6,让颜色条显示更清晰。
内容的提问来源于stack exchange,提问作者user308827
相关产品推荐
相关产品推荐

