HI,
  I have troubles getting to wirk a hitogram plot. I have colors in
RGB as tuples of 3 values and also some colors defined as string,
e.g. 'orange'. I get the folowing error:

  File "/usr/lib64/python2.7/site-packages/matplotlib/pyplot.py", line 2332, in 
hist
    ret = ax.hist(x, bins, range, normed, weights, cumulative, bottom, 
histtype, align, orientation, rwidth, log, color, label, **kwargs)
  File "/usr/lib64/python2.7/site-packages/matplotlib/axes.py", line 7598, in 
hist
    raise ValueError("color kwarg must have one color per dataset")
ValueError: color kwarg must have one color per dataset


  I think it is about the code in this patch:
http://permalink.gmane.org/gmane.comp.python.matplotlib.scm/4600

  I hacked a bit the code in colors.py and axes.py to get more debug.
As you can see below it seems a previous value if left in the colors variable
from a previous iteration (I think).

['orange', (0.9468480101059871, 1.0, 0.0)] = colors[:2]

[cut]

    pylab.hist(counts[:2], histtype='bar', align='mid', log=True, 
bins=len(counts[:2]), color=colors[:2], label=adapternames[:2])
  File "/usr/lib64/python2.7/site-packages/matplotlib/pyplot.py", line 2332, in 
hist
    ret = ax.hist(x, bins, range, normed, weights, cumulative, bottom, 
histtype, align, orientation, rwidth, log, color, label, **kwargs)
  File "/usr/lib64/python2.7/site-packages/matplotlib/axes.py", line 7598, in 
hist
    raise ValueError("color kwarg must have one color per dataset: color=%d, 
nx=%d, color='%s', nx='%s'" % (len(color), nx, str(color), str(nx)))
ValueError: color kwarg must have one color per dataset: color=2, nx=1, 
color='[[ 1.          0.64705882  0.          1.        ]
 [ 0.94684801  1.          0.          1.        ]]', nx='1'


  Alternatively I would believe that matplotlib breaks because I have for 
different
data points same color ('orange' appears maybe 10x in my colors list) but the 
above slice [:2]
excludes this a the cause I am getting right now.


If it matters I generated the colors by this approach:
    for _n in range(1,cnt1 + 1):
        _h1 = sorted([uniform(0.15, 0.85) for x in range(_n)])
        _HSV_tuples1 = [(_h1[x], 1.0, 1.0) for x in range(_n)]
        _RGB_tuples1 = map(lambda x: colorsys.hsv_to_rgb(*x), _HSV_tuples1)
but these are mixed together with those defined as string (e.g. 'orange')
before they are sent to matplotlib.

Thank you for you help.
Martin
BTW: Would be nice if the default error messages on the above shown raise() were
more detailed.

------------------------------------------------------------------------------
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to