2016-08-25 5 views
2

Ich versuche ein Balkendiagramm zu erstellen, das die 95% -Konfidenzintervalle für jede Gruppe anzeigt. Da sie zu 95% Konfidenzintervalle sind, sind sie offensichtlich asymmetrisch. Das Problem, das ich habe, ist jedoch, dass ich nicht herausfinden kann, wie man jeden 95% CI-Balken für jede Gruppe (dh jeden Balken) unterschiedlich macht, da sie offensichtlich für jeden unterschiedlich sind.matplotlib Balkendiagramm mit verschiedenen Fehlerbalken für jeden Balken

Mein Code ist wie folgt:

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() 

So zum Beispiel:

`confInterval95Passive[0],confInterval95Passive[1] = 2.71596442574 4.13221200188` 

Aber für jede der drei Gruppen (passiv, aktiv und Roboter) diese Statistiken unterschiedlich sind. Also wie mache ich das Balkendiagramm mit drei verschiedenen Balken, mit drei verschiedenen und asymmetrischen Fehlerbalken? Ich nehme an, dass es im 'yerr =' Argument behandelt werden sollte?

Danke für jede Hilfe !!

Antwort

0

beschloß ich, das Problem wie folgt aus:

yerrs = [[meanPassivePSE-confInterval95Passive[0], confInterval95Active-confInterval95Active[0], confInterval95Robot-confInterval95Robot[0]], 
[[confInterval95Passive[1]-meanPassivePSE, confInterval95Active[1]-confInterval95Active, confInterval95Robot[1]-confInterval95Robot]] 
  • ax.errorbars Werte verwendet/subtrahieren
  • daher die berechneten Konfidenzintervalle
  • von Mittelwerten durch die Mittelwerte werden genormt müssen hinzufügen
  • Später fügt ax.errorbars diese Werte erneut hinzu/subtrahiert sie.

Nun kann der Parameter in die Bar gesetzt werden() - Methode

plt.bar(yPos, PSE, align='center', alpha=0.5, color=('g','b','r'), yerr = yerrs) 
Verwandte Themen