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

Reply via email to