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

如何为Matplotlib水平条形图按数值设置红-绿渐变颜色?

水平条形图实现红-绿颜色渐变方案

核心实现步骤

  • 利用matplotlib内置的RdYlGn颜色映射(红-黄-绿渐变),完美匹配0(红)到10(绿)的数值范围
  • 将评分值归一化到颜色映射的0-1取值区间,确保每个数值对应唯一渐变颜色
  • 为每个条形单独设置对应颜色

修改后的完整代码

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

rating = [8, 4, 5, 6]
objects = ('h', 'b', 'c', 'a')
y_pos = np.arange(len(objects))

# 固定评分范围0-10,将数值归一化到颜色映射适配的0-1区间
norm = plt.Normalize(0, 10)
# 根据归一化后的数值生成对应颜色,0对应红色,10对应绿色
colors = plt.cm.RdYlGn(norm(rating))

# 绘制带渐变颜色的水平条形图
plt.barh(y_pos, rating, align='center', alpha=0.8, color=colors)
plt.yticks(y_pos, objects)

plt.xlabel('评分')
plt.title('评分水平条形图(红-绿渐变)')

plt.show()

关键细节说明

  • plt.Normalize(0,10):强制以0-10为基准做归一化,即使你的数据没有覆盖全范围,也能保证颜色渐变逻辑统一
  • plt.cm.RdYlGn(norm(rating)):生成与评分一一对应的RGB颜色数组,直接传入barh的color参数即可
  • 调整alpha参数可控制条形透明度,让渐变效果更自然

该方案支持数千条数据的高效渲染,无需额外优化即可稳定运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:10:15