如何绘制不同颜色、以指定柱为中心配色并带对应图例的直方图
Python直方图自定义配色修改方案
实现逻辑如下:
- 10个柱子的索引从0开始计数,需求中的第4个柱子对应索引为3
- 采用对称渐变配色方案,以第4个柱子为中心向两侧渐变,中心柱子单独设置为白色
- 逐个绘制每个柱子并绑定对应标签,最终生成和柱体颜色匹配的图例
import numpy as np import pylab as plt from matplotlib import cm # 生成原始数据 data = np.array(np.random.rand(1000)) y, binEdges = np.histogram(data, bins=10) bincenters = 0.5*(binEdges[1:]+binEdges[:-1]) menStd = np.sqrt(y) width = 0.05 # 配置配色规则 center_idx = 3 # 第4个柱子对应索引 bar_count = len(y) # 生成渐变配色,可替换为其他matplotlib支持的colormap调整风格 colors = cm.RdBu_r(np.linspace(0, 1, bar_count)) # 中心柱设置为不透明白色 colors[center_idx] = [1,1,1,1] # 逐个绘制柱子并存储对象用于生成图例 bar_objs = [] for idx in range(bar_count): bar = plt.bar(bincenters[idx], y[idx], width=width, color=colors[idx], yerr=menStd[idx]) bar_objs.append(bar[0]) # 添加图例,可自定义labels内容修改图例显示文字 labels = [f'分组{idx+1}' for idx in range(bar_count)] plt.legend(bar_objs, labels) plt.show()
如果需要调整渐变风格,可以将代码中的RdBu_r替换为coolwarm、bwr等matplotlib内置的colormap;也可以直接自定义颜色列表传入colors变量实现自定义配色。
内容的提问来源于stack exchange,提问作者Luis Valencia
相关产品推荐
相关产品推荐

