如何用带均值标准差的pandas多级索引数据绘制带误差棒的分组条形图
解决方案
实现思路
你需要先将行索引中的均值、标准差数据拆分,再调整数据维度匹配绘图要求:
- 从原多级索引DataFrame中分别提取均值(mean)、标准差(std)两个子集
- 对两个子集做转置,让代谢物名称(cis-aconitate系列)作为行索引,对应x轴的刻度项;ADE/VEH分组作为列,对应每个刻度下的两个分组条形
- 绘图时将标准差数据传入
yerr参数作为误差棒数据源
完整代码示例
import pandas as pd import matplotlib.pyplot as plt # 1. 拆分均值、标准差数据并转置 mean_data = df.loc['mean'].T std_data = df.loc['std'].T # 2. 绘制带误差棒的分组条形图 ax = mean_data.plot( kind='bar', yerr=std_data, # 传入标准差作为误差棒 capsize=4, # 误差棒两端短横线的长度 figsize=(12, 6), # 画布尺寸 rot=45 # x轴标签旋转角度,避免重叠 ) # 可选:补充图表标注 ax.set_ylabel('数值(均值)') ax.set_xlabel('代谢物分组') plt.tight_layout() # 自动调整布局,防止标签被截断 plt.show()
运行上述代码即可得到你需要的效果:x轴按顺序排列所有cis-aconitate系列项,每个刻度下有ADE、VEH两个颜色不同的条形,误差棒自动匹配对应分组的标准差数值。
内容的提问来源于stack exchange,提问作者jmorrr
相关产品推荐
相关产品推荐

