matplotlib条形图,每个b有不同的误差线

2024-06-16 16:02:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个条形图,显示每组95%的置信区间。很明显,当它们是95%的置信区间时,它们是不对称的。然而,我遇到的问题是,我无法解决如何使每个95%置信区间的每一组都不同(即每个区间),因为它们显然是不同的。在

我的代码如下:

meanPassivePSE = np.mean(PSE_PASSIVE)
stdPassivePSE = np.std(PSE_PASSIVE)
meanActivePSE= np.mean(PSE_ACTIVE_HUMAN)
stdActivePSE = np.std(PSE_ACTIVE_HUMAN)
meanRoboticPSE=np.mean(PSE_ACTIVE_ROBOT)
stdRoboticPSE = np.std(PSE_ACTIVE_ROBOT)


#95%conf intervals

confInterval95Passive = stats.norm.interval(0.95, loc=meanPassivePSE, scale=stdPassivePSE/np.sqrt(len(PSE_PASSIVE)))
confInterval95Active = stats.norm.interval(0.95, loc=meanActivePSE, scale=stdActivePSE/np.sqrt(len(PSE_ACTIVE_HUMAN)))
confInterval95Robot = stats.norm.interval(0.95, loc=meanRoboticPSE, scale=stdRoboticPSE/np.sqrt(len(PSE_ACTIVE_ROBOT)))


conditions = 'Passive', 'Active Human', 'Active Robot'
yPos = np.arange(len(conditions))
PSE = [meanPassivePSE, meanActivePSE, meanRoboticPSE]


plt.bar(yPos, PSE, align='center', alpha=0.5, color=('g','b','r'), yerr = (????) )
#plt.errorbar(confInterval95Passive[0], confInterval95Passive[1])

plt.xticks(yPos,conditions)
plt.ylabel('Point of Subject Equality (ms)')
plt.title('Average Point of Subjective Equality in each Condition')
plt.show()

例如:

^{pr2}$

但是对于三个组(被动组、主动组和机器人组),这些统计数据是不同的。那么如何使条形图有三个不同的条形图,有三个不同的不对称误差线?我想应该在“yerr=”的论点中处理这个问题?在

谢谢你的帮助!!在


Tags: lennprobotpltmeanactivestd条形图
1条回答
网友
1楼 · 发布于 2024-06-16 16:02:29

我就这样解决了这个问题:

yerrs = [[meanPassivePSE-confInterval95Passive[0], confInterval95Active-confInterval95Active[0], confInterval95Robot-confInterval95Robot[0]],
[[confInterval95Passive[1]-meanPassivePSE, confInterval95Active[1]-confInterval95Active, confInterval95Robot[1]-confInterval95Robot]]
  • 在轴误差条使用值对平均值进行加/减
  • 因此,计算的置信区间需要用平均值进行标准化
  • 稍后轴误差条再次添加/减去这些值。在

现在可以将参数放入bar()-方法中

^{pr2}$

相关问题 更多 >