误差棒可以表示样本标准差,也可以表示样本标准误。
导入库:
import pandas as pd
自定义用来绘制带误差棒(样本标准差或样本标准误)的柱状图:
def col(y, x, face, df, errprbar='std') :
print(ggplot(df.groupby([x,face])[y]\
.agg(['mean','std', 'sem']).reset_index(),
aes(y='mean', x=x))
+ geom_errorbar( aes(ymin=f'mean - {errprbar}', ymax=f'mean + {errprbar}'), width=.2 )
+ geom_col()
+ theme_bw()
+ facet_wrap(f' ~ {face}')
+ labs(y= y,
x= x)
+ theme(axis_text_x=element_text(angle=45))
)
导入待分析的df:
df = pd.DataFrame({'age': [25, 30, 35, 40, 45, 27, 33, 38, 42, 50],
'sex': ['Male', 'Female', 'Male', 'Female', 'Male', 'Female', 'Male', 'Female', 'Male', 'Female'],
'group': ['A', 'B', 'A', 'B', 'A', 'A', 'B', 'A', 'B', 'A']})
# df为:
age sex group
0 25 Male A
1 30 Female B
2 35 Male A
3 40 Female B
4 45 Male A
5 27 Female A
6 33 Male B
7 38 Female A
8 42 Male B
9 50 Female A
绘制误差棒表示样本标准差的条形图
col('age', 'group', 'sex', df) # 默认误差棒表示样本标准差
col('age', 'group', 'sex', df, errprbar='std')
误差棒表示样本标准误
col('age', 'group', 'sex', df, errprbar='sem')