|
From: Martin M. <mmo...@fo...> - 2012-04-13 12:30:53
|
Martin Mokrejs wrote:
> Hi,
> I am trying to improve my code where I cannot find out why matplotlib-1.1.0 does not
> support colors specified as RG tuples. Here is an example.
>
>
>
> import numpy as np
> import matplotlib.pyplot as plt
>
> _nums = [160.0, 160.0, 160.0, 95.0, 160.0, 160.0]
Grr. This was the trick:
_nums = [[160.0], [160.0], [160.0], [95.0], [160.0], [160.0]]
What a wasteful list creation. :(
> _colors = [(0.5019607843137255, 0.0, 0.5019607843137255), (0.5019607843137255, 0.0, 0.5019607843137255), (0.5019607843137255, 0.0, 0.5019607843137255), (0.5019607843137255, 0.0, 0.5019607843137255), (0.5019607843137255, 0.0, 0.5019607843137255), (0.5019607843137255, 0.0, 0.5019607843137255)]
> _legends = ['foo', 'foo', 'foo', 'blah', 'foo', 'foo']
>
> plt.hist(_nums, histtype='bar', align='mid', color=_colors, log=False, label=_legends)
>
> plt.show()
>
>
> The above code gives me:
>
> 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
>
>
> Mainly, I am suggesting the error message to be improved and to write out how many
> items were in data, color and legend iterables passed to the function. That would help
Would it tells me my problem is not with color but with data points life would be much easier. ;)
> in some cases albeit not with this example. That needs some other fix. ;)
>
> I would like that one can also pass in a list of HTML-like colors, e.g. 'F0F8FF' or 0xF0F8FF
> would be valid.
Sorry, meant also '#F0F8FF', but now I have verified that they do work already:
_colors = ['b', 'b', 'b', 'r', 'b', 'b']
_colors = ['#C0C0C0', '#C0C0C0', '#C0C0C0', '#800000', '#C0C0C0', '#C0C0C0']
_colors = [(0.5019607843137255, 0.0, 0.5019607843137255), (0.5019607843137255, 0.0, 0.5019607843137255), (0.5019607843137255, 0.0, 0.5019607843137255), (0.5019607843137255, 0.0, 0.5019607843137255), (0.5019607843137255, 0.0, 0.5019607843137255), (0.5019607843137255, 0.0, 0.5019607843137255)]
So this was all about *data* points to be wrapped in iterables. :((
Martin
|