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

如何基于颜色映射(Colormap)为Jupyter Notebook中的柱状图按值着色?

实现柱状图按0-1数值匹配Colormap着色

核心方案

利用Matplotlib的颜色映射工具,将每个柱子对应的0-1浮点值直接映射为对应颜色,把颜色列表传给柱状图的color参数,最后添加匹配的颜色条即可。

完整代码示例

# Jupyter环境下确保图形内嵌显示
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from matplotlib.colors import Normalize

# 准备数据
labels = ['柱1', '柱2', '柱3', '柱4']
heights = [10, 15, 12, 18]  # 柱子高度
x_values = [0.2, 0.6, 0.8, 0.3]  # 每个柱子对应的0-1数值

# 选择颜色映射(可替换为其他colormap,比如'plasma'、'coolwarm')
cmap = cm.viridis
# 归一化数值(x已在0-1区间时可省略,保留适配更广泛场景)
norm = Normalize(vmin=0, vmax=1)
# 生成每个x对应的颜色
colors = [cmap(norm(x)) for x in x_values]

# 绘制柱状图
fig, ax = plt.subplots()
ax.bar(labels, heights, color=colors)

# 添加颜色条
sm = cm.ScalarMappable(norm=norm, cmap=cmap)
sm.set_array([])  # 仅用于关联颜色条,无需传入数据
fig.colorbar(sm, ax=ax, label='数值映射')

ax.set_ylabel('柱子高度')
plt.show()

关键说明

  • 颜色转换:cmap(norm(x))会将0-1区间的数值转换成Colormap对应的RGBA颜色值,直接作为柱子的颜色参数。
  • 颜色条关联:ScalarMappable用于绑定颜色映射与颜色条,确保颜色条刻度和柱子颜色一一对应。
  • 自定义Colormap:把cm.viridis替换为你需要的Colormap名称即可,比如cm.coolwarm、cm.plasma都适用。

如果之前尝试失败,大概率是未正确将数值映射为颜色列表,或是没把颜色条与Colormap关联起来。上述代码在Jupyter Notebook中直接运行就能得到目标效果。

内容的提问来源于stack exchange,提问作者MennovG

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:22:46