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

如何使用Seaborn绘制多列分组的均值及标准差柱状图

Seaborn绘制分组条件均值柱状图实现方案

核心思路

你新增列多级索引的操作是完全正确的,后续只需要把宽格式的原始数据集转换为Seaborn适配的长格式数据集,直接调用柱状图接口即可自动计算分组均值、生成标准差误差棒,无需手动提前统计数值。

完整实现代码

1. 导入依赖库

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

2. 初始化测试数据集(和你提供的示例一致)

np.random.seed(10)
df = pd.DataFrame({
    'S1_1':np.random.randn(6),
    'S1_2':np.random.randn(6),
    'S1_3':np.random.randn(6),
    'S1_4':np.random.randn(6),
    'S2_1':np.random.randn(6),
    'S2_2':np.random.randn(6),
    'S2_3':np.random.randn(6),
    'S2_4':np.random.randn(6),
    },index= ['var1','var2','var3','var4','var5','var6'])
# 为列添加多级索引区分两组条件,和你的操作一致
df.columns = pd.MultiIndex.from_arrays([['Condition 1'] * 4 + ['Condition 2'] * 4, df.columns])

3. 转换为长格式数据集

# 把列层级转换为行维度,重置索引生成结构化长表
df_long = df.stack(level=[0,1]).reset_index()
# 重命名列方便后续调用
df_long.columns = ['被测变量', '实验条件', '重复测量编号', '测量值']

4. 绘制目标柱状图

plt.figure(figsize=(6,4))
sns.barplot(
    data=df_long,
    x='实验条件', # 按实验条件分组,最终生成2根柱子
    y='测量值',
    errorbar='sd', # 误差棒显示标准差,需置信区间可改为'ci'
    palette='coolwarm'
)
# 按需调整图表标签
plt.xlabel('实验条件')
plt.ylabel('所有测量值均值')
plt.title('不同条件下测量值均值与标准差')
plt.show()

可选扩展说明

如果需要按被测变量分组、每个变量下显示2根不同条件的柱子,仅需把sns.barplot的x参数改为被测变量,新增hue='实验条件'参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:45:03