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

如何将Viridis色映射应用于条形图,使Y轴值匹配色条

用Viridis色映射匹配数值给条形图上色的解决方案

没问题!要让你的4个条形图颜色和现有viridis色映射的色条精准对应,完全可以实现——核心思路就是把每个条形的Y轴数值直接映射到viridis的颜色空间里,这样数值高低就能和色条的色调一一匹配上。下面我用Python matplotlib(看你用到了色映射,大概率用的是这个库)给你一步步演示:

  • 第一步:导入所需的库
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.cm import viridis
from matplotlib.colors import Normalize
  • 第二步:准备你的条形数据
    把这里的bar_values替换成你实际要用来画4个条形的Y轴数值就行,比如从你的大矩阵里提取的目标值:
# 示例:替换成你自己的4个条形数值
bar_values = [12, 28, 35, 41]
bar_labels = ["条形1", "条形2", "条形3", "条形4"]
  • 第三步:将数值映射到Viridis色空间
    关键是用Normalize把你的数值范围归一化到viridis色映射的0-1区间,如果要和你之前的图表色条完全对齐,记得用和之前图表一样的vmin和vmax值:
# 如果你想和原矩阵的全局数值范围对齐,就用矩阵的min和max
norm = Normalize(vmin=np.min(matrix), vmax=np.max(matrix))
# 如果你只想针对这4个条形的数值范围,就用:
# norm = Normalize(vmin=np.min(bar_values), vmax=np.max(bar_values))

# 给每个数值匹配对应的viridis颜色
bar_colors = viridis(norm(bar_values))
  • 第四步:绘制带对应颜色的条形图并添加色条
fig, ax = plt.subplots()
# 绘制带自定义颜色的条形图
bars = ax.bar(bar_labels, bar_values, color=bar_colors)

# 添加和原图表一致的色条,让颜色和数值对应关系更清晰
sm = plt.cm.ScalarMappable(cmap='viridis', norm=norm)
sm.set_array([])  # 这一步是必要的,让ScalarMappable能正确生成色条
fig.colorbar(sm, ax=ax, label="Y轴数值")

plt.title("Viridis色映射匹配数值的条形图")
plt.show()

小提示:如果你用的是Seaborn库,思路也是一样的——用sns.color_palette("viridis", as_cmap=True)获取色映射,再用同样的归一化方法给数值匹配颜色就可以啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:37:40