[英]Plotting the mean of multiple columns including standard deviation in Python (Seaborn)
我有一个包含 8 列和几行的数据集。 这些列包含在 2 个不同条件下对不同变量(总共 6 个)的测量值,每列包含 4 个包含特定条件重复测量值的列。
使用 Searborn,我想生成一个条形图,显示每 4 列的平均值和标准偏差,按索引键(即测量变量)分组。 数据帧结构如下:
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'])
我如何传递给我只想要 2 个小节的 seaborn,前 4 列 1 个,第二个 1 个。 每个条形显示跨 4 列的平均值(和标准偏差或其他一些分散度量)。
我正在考虑使用多索引,添加第二个列级别将列分组为 2 个条件,
df.columns = pd.MultiIndex.from_arrays([['Condition 1'] * 4 + ['Condition 2'] * 4,df.columns])
但我不知道我应该传递给 Seaborn 什么来生成我想要的情节。
如果有人能指出我正确的方向,那将是一个很大的帮助!
ax
从axes
group
从df
选择data
并使用.T
转置数据。sns.barplot
默认estimator
是平均值,所以条的长度是平均值,并设置ci='sd'
所以置信区间是标准偏差。import seaborn as sns
# using the first comma separated data that was posted, create groups of 4
l = df.columns
n = 4
groups = [l[i:i+n] for i in range(0, len(l), n)]
num_gps = len(groups)
# plot
fig, axes = plt.subplots(num_gps, 1, figsize=(12, 6*num_gps))
for ax, group in zip(axes, groups):
data = df[group].T
sns.barplot(data=data, ci='sd', ax=ax)
ax.set_title(f'{group.to_list()}')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.