2012-11-09 3 views
10

Sto provando a tracciare 4 valori medi con barre di errore positive e il valore massimo all'interno del grafico.Come faccio a tracciare solo la barra degli errori positiva con pyplot.bar?

means = [26.82,26.4,61.17,61.55]   # Mean Data 
stds = [4.59,4.39,4.37,4.38]   # Standard deviation Data 
peakval = ['26.82','26.4','61.17','61.55'] # String array of means 

ind = np.arange(len(means)) 
width = 0.35 
colours = ['red','blue','green','yellow'] 

pyplot.figure() 
pyplot.title('Average Age') 
for i in range(len(means)): 
    pyplot.bar(ind[i],means[i],width,color=colours[i],align='center',yerr=stds[i],ecolor='k') 
pyplot.ylabel('Age (years)') 
pyplot.xticks(ind,('Young Male','Young Female','Elderly Male','Elderly Female')) 

def autolabel(bars,peakval): 
    for ii,bar in enumerate(bars): 
     height = bars[ii] 
     pyplot.text(ind[ii], height-5, '%s'% (peakval[ii]), ha='center', va='bottom') 
autolabel(means,peakval)  

Tuttavia, non riesco a scoprire come tracciare solo le barre di errore positive. così finisco con un grafico come questo:

Average Age

Qualche suggerimento sarebbe molto apprezzato.

risposta

11

Se ho capito bene si può fare questo:

import numpy as np 
from matplotlib import pyplot 

means = [26.82,26.4,61.17,61.55]   # Mean Data 
stds = [(0,0,0,0), [4.59,4.39,4.37,4.38]] # Standard deviation Data 
peakval = ['26.82','26.4','61.17','61.55'] # String array of means 

ind = np.arange(len(means)) 
width = 0.35 
colours = ['red','blue','green','yellow'] 

pyplot.figure() 
pyplot.title('Average Age') 
pyplot.bar(ind, means, width, color=colours, align='center', yerr=stds, ecolor='k') 
pyplot.ylabel('Age (years)') 
pyplot.xticks(ind,('Young Male','Young Female','Elderly Male','Elderly Female')) 

def autolabel(bars,peakval): 
    for ii,bar in enumerate(bars): 
     height = bars[ii] 
     pyplot.text(ind[ii], height-5, '%s'% (peakval[ii]), ha='center', va='bottom') 
autolabel(means,peakval) 
pyplot.show() 

Risultato:

enter image description here

Funziona perché si può passare come yerr un elenco 2xN, che rappresenta gli offset positivi e negativi" ", vedere lo documentation.

+0

Perfetto, grazie. –