如何使用Matplotlib自定义误差图的系列颜色与深浅配色
Matplotlib误差棒自定义配色方案
核心配置逻辑:
- 为x=0位置的两个数据集(data1、data3)分配绿色系,选用
#238b45(深绿)、#74c476(浅绿)做深浅区分 - 为x=1位置的两个数据集(data2、data4)分配红色系,选用
#cb181d(深红)、#fb6a4a(浅红)做深浅区分 - 调用
errorbar时通过color指定标记色、ecolor指定误差棒色、capsize设置误差棒端帽长度,匹配参考图显示效果 - 修正原示例的坐标配置:x=0组数据集固定在x=0坐标绘制,x=1组数据集固定在x=1坐标绘制,避免跨位置渲染
完整可运行代码:
import matplotlib.pyplot as plt # 预定义配色 color_map = { "data1": "#238b45", "data3": "#74c476", "data2": "#cb181d", "data4": "#fb6a4a" } # 构造样本数据 data_1 = { 'x': [0], 'y': [2], 'yerr': [0.2], 'color': color_map["data1"], 'ecolor': color_map["data1"], 'capsize': 5 } data_2 = { 'x': [1], 'y': [5], 'yerr': [0.2], 'color': color_map["data2"], 'ecolor': color_map["data2"], 'capsize': 5 } data_3 = { 'x': [0], 'y': [6], 'yerr': [0.3], 'color': color_map["data3"], 'ecolor': color_map["data3"], 'capsize': 5 } data_4 = { 'x': [1], 'y': [10.6], 'yerr': [0.8], 'color': color_map["data4"], 'ecolor': color_map["data4"], 'capsize': 5 } # 绘制左子图 plt.subplot(121) plt.errorbar(**data_1, fmt='o', markersize=8) plt.errorbar(**data_2, fmt='o', markersize=8) plt.xlim([-0.5, 1.5]) plt.xticks([0, 1]) # 绘制右子图 plt.subplot(122) plt.errorbar(**data_3, fmt='o', markersize=8) plt.errorbar(**data_4, fmt='o', markersize=8) plt.xlim([-0.5, 1.5]) plt.xticks([0, 1]) plt.tight_layout() plt.show()
如果需要保留原数据中每个系列同时包含x=0、x=1点位的结构,仅要求不同x位置的点位匹配对应色系,可以给颜色参数传入与x序列等长的颜色列表,按点位自动匹配颜色,示例写法:
# 左子图data1:x=0用深绿,x=1用深红 plt.errorbar( x=[0,1], y=[2,3], yerr=[0.2,0.2], fmt='o', markersize=8, color=[color_map["data1"], color_map["data2"]], ecolor=[color_map["data1"], color_map["data2"]], capsize=5 )
内容的提问来源于stack exchange,提问作者Giano
相关产品推荐
相关产品推荐

