如何在Python中根据数值大小生成对应颜色绘制柱状图?
实现柱状图颜色随数值深浅变化的解决方案
要让柱状图的颜色随数值大小渐变(数值越小颜色越浅,越大越深),可以利用Matplotlib的颜色映射(colormap)功能来实现,具体步骤如下:
核心思路
- 将数值归一化到0-1的范围,方便对应颜色映射的梯度区间
- 选择一个渐变配色方案(比如蓝色系
Blues,从浅到深) - 为每个数值匹配对应的颜色
修改后的完整代码
import matplotlib.pyplot as plt from matplotlib.colors import Normalize fig, ax = plt.subplots() names = ['A', 'B', 'C', 'D'] counts = [30, 40, 55, 100] # 把数值归一到0-1区间,最小数值对应0,最大数值对应1 norm = Normalize(vmin=min(counts), vmax=max(counts)) # 选用蓝色渐变配色,数值越小颜色越浅,越大越深 cmap = plt.cm.Blues # 为每个count值生成对应的颜色 bar_colors = cmap(norm(counts)) ax.bar(names, counts, color=bar_colors) ax.set_ylabel('Frequency') ax.set_title('Names') plt.show()
代码说明
Normalize:负责将counts中的数值线性映射到0-1范围,保证最小数值对应配色的最浅端,最大数值对应最深端plt.cm.Blues:Matplotlib内置的蓝色渐变配色方案,你也可以替换成其他渐变配色,比如Greens(绿色渐变)、Reds(红色渐变)来适配不同需求cmap(norm(counts)):生成每个数值对应的RGBA颜色数组,直接传递给bar函数的color参数即可实现渐变效果
内容的提问来源于stack exchange,提问作者Orca
相关产品推荐
相关产品推荐

