在条形图上使用yerr()绘制标准误差(std / sqrt(N))

时间:2020-03-05 06:54:37

标签: python matplotlib

我对Python很陌生。我正在尝试绘制sample data

的箱形图

我正在尝试绘制共享数据均值的箱形图。我得到了代码的那部分。我还尝试使用yerr()在此箱形图中绘制标准误差值。

我的代码

data3=pd.read_csv('demo1.csv')
names=['brow', 'harr', 'hage', 'buch', 'mcre']
d=[data3['brow'].mean(),data3['harr'].mean(),data3['hage'].mean(),data3['buch'].mean(),data3['mcre'].mean()]
N=len(data3['co'])
l=math.sqrt(N)
k=[(data3['brow'].std())/l,(data3['harr'].std())/l,(data3['hage'].std())/l,(data3['buch'].std())/l,(data3['mcre'].std())/l,(data3['phil'].std())/l,(data3['moor'].std())/l]
fig, ax = plt.subplots()
plt.bar(names,d)
plt.bar(len(names),d,yerr=k,align='center',alpha=0.5,ecolor='black',capsize=10)

我正在获得像这样的图像enter image description here

但是我希望黑线与每个条形图相对,而不是在所有这些条形图中作为新的条形。我该如何更改。我使用错误的方式是吗?请帮忙。

1 个答案:

答案 0 :(得分:0)

我不明白您第二次致电plt.bar()

时要做什么。
import math
names=['brow', 'harr', 'hage', 'buch', 'mcre']

data3 = pd.DataFrame({n: np.random.normal(loc=np.random.randint(5,10), scale=np.random.randint(1,10), size=(100,)) for n in names})


d=data3[names].mean()
N=100
l=math.sqrt(N)
k=data3[names].std()/l
fig, ax = plt.subplots()
plt.bar(names,d,yerr=k,align='center',alpha=0.5,ecolor='black',capsize=10)

enter image description here