首页 > 解决方案 > 在条形图上使用 yerr() 绘制标准误差(std/sqrt(N))

问题描述

我对 Python 很陌生。我正在尝试为样本数据绘制箱形图

我正在尝试绘制共享数据平均值的箱线图。我得到了那部分代码。我还尝试使用在此箱形图上绘制标准误差值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)

我得到这样的图像在此处输入图像描述

但我希望黑线与每个条形图相对,而不是作为图中的新条,将它们全部放在一起。我该如何改变这一点。我是否以错误的方式使用 plt?请帮忙。

标签: pythonmatplotlib

解决方案


我不明白你在第二次打电话时想做什么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)

在此处输入图像描述


推荐阅读