Hello to all I've discovered Numpy and Matplotlib two weeks ago and I'm trying to free myself to the slavery of Matlab (TM) ;) and I'm converting all my small sotware about chemometrics in python (and I will be happy to release them soon to the community) I've searched a bit in the mailing list archive but not found anything about this topic. I have to make a plot with errorbars (I take two vectors from previous calculation). I thuoght it was an esay task... but.. let's see what happened
first try withous error bars #!/usr/bin/env python # a stacked bar plot with errorbars from pylab import * #womenMeans = (25, 32, 34, 20, 25) #womenStd = (2, 3, 4, 1, 2) #womenStd = (3.1, 5.1, 2.3, 3.5, 3.4) ############### it works ##N=5 ##menMeans = array([[20], [35], [30], [35], [27]]) ##ind = arange(N) # the x locations for the groups ##width = 0.35 # the width of the bars: can also be len(x) sequence ##p1 = bar(ind, womenMeans, width, color='r', ) and it worked !!! simple plot with error (but this time with sequences..) ################ it works ##womenStd = (3.1, 5.1, 2.3, 3.5, 3.4) ##N=5 ##menMeans = (20, 35, 30, 35, 27) ##ind = arange(N) # the x locations for the groups ##width = 0.35 # the width of the bars: can also be len(x) sequence ##p1 = bar(ind, womenMeans, width, color='r', yerr=womenStd) it works... so I thought.. I will add error bars and be ok ...BUT.... ############## it doesnt'works ##womenStd = array([[3.1], [5.1], [2.3], [3.5], [3.4]]) ##N=5 ##womenMeans = array([[20], [35], [30], [35], [27]]) ##ind = arange(N) # the x locations for the groups ##width = 0.35 # the width of the bars: can also be len(x) sequence ##p1 = bar(ind, womenMeans, width, color='r', yerr=womenStd) ##Traceback (most recent call last): ## File "C:\Python25\Lib\site-packages\matplotlib\examples\bar_stacked.py", line 34, in -toplevel- ## p1 = bar(ind, menMeans, width, color='r', yerr=womenStd) ## File "C:\Python24\Lib\site-packages\matplotlib\pylab.py", line 1651, in bar ## ret = gca().bar(*args, **kwargs) ## File "C:\Python24\Lib\site-packages\matplotlib\axes.py", line 2572, in bar ## fmt=None, ecolor=ecolor, capsize=capsize) ## File "C:\Python24\Lib\site-packages\matplotlib\axes.py", line 2904, in errorbar ## barlines.extend( self.vlines(x, y, upper, label='_nolegend_' ) ) ## File "C:\Python24\Lib\site-packages\matplotlib\axes.py", line 2032, in vlines ## color=color, linestyle=linestyle, marker=marker, ## File "C:\Python24\Lib\site-packages\matplotlib\lines.py", line 206, in __init__ ## self.set_data(xdata, ydata) ## File "C:\Python24\Lib\site-packages\matplotlib\lines.py", line 269, in set_data ## raise RuntimeError('xdata and ydata must be the same length') ##RuntimeError: xdata and ydata must be the same length ############# What's the matter ????? After spending an hour searching what a tuple, and a sequence is... I've solved the problem in this way... womenStd = array([[3.1], [5.1], [2.3], [3.5], [3.4]]) womenStdFlatten=womenStd.flatten() womenStdTuple=tuple(womenStdFlatten) N=5 womenMeans = array([[20], [35], [30], [35], [27]]) womenFlatten=womenMeans.flatten() womenTuple=tuple(womenFlatten) ind = arange(N) # the x locations for the groups width = 0.35 # the width of the bars: can also be len(x) sequence p1 = bar(ind, womenTuple, width, color='r', yerr=womenStdTuple) ylabel('Scores') title('Scores by group and gender') #xticks(ind+width/2., ('G1', 'G2', 'G3', 'G4', 'G5') ) #yticks(arange(0,81,10)) #legend( (p1[0], p2[0]), ('Men', 'Women') ) show() Does anyone know if this is the only solution to get it work ???? I hope to have helped someone with the same problem like me and also curious to know if there is any other solution Used python 2.4 scypy 1.0 , and the last version of numpy and matplotlib avaible for them Cheers Giorgio ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users