In article <[email protected]>,
"Russell E. Owen" <[email protected]> wrote:
> I am trying to make a legend for a stacked histogram using matplotlib
> 1.0.1 and it's not working.
>
> Here's what I've tried so far:
>
> count, bins, ignored = pyplot.hist(
> (matchedStarPsfMags, unmatchedRefStarPsfMags,
> unmatchedSourcePsfMags),
> bins=30, histtype='barstacked', normed=True)
> pyplot.legend(("matched stars", "unmatched stars", \
> "false detections"), loc='upper left')
>
> This produces a nice stacked histogram with red, green and blue.
> Unfortunately the legend is blue for all three entries, so the legend is
> useless!
>
> I figured I could label the data instead. The documentation for hist
> says:
> label:
> String, or sequence of strings to match multiple datasets. Bar charts
> yield multiple patches per dataset, but only the first gets the label,
> so that the legend command will work as expected:
>
> That last sentence sounded really ominous in this context, but I figured
> I would try it anyway. Unfortunately this code fails:
>
> count, bins, ignored = pyplot.hist(
> (matchedStarPsfMags, unmatchedRefStarPsfMags,
> unmatchedSourcePsfMags),
> label = ("matched stars", "unmatched stars",
> "false detections"),
> bins=30, histtype='barstacked', normed=True)
> pyplot.legend(loc='upper left')
>
> with this error:
>
> Traceback (most recent call last):
> File "bin/measDepth.py", line 291, in <module>
> pyplot.legend(loc='upper left')
> File
> "/lsst/DC3/stacks/gcc443/15oct2010/Linux64/external/matplotlib/0.98.5.2+1
> /lib/python/matplotlib/pyplot.py", line 2441, in legend
> ret = gca().legend(*args, **kwargs)
> File
> "/lsst/DC3/stacks/gcc443/15oct2010/Linux64/external/matplotlib/0.98.5.2+1
> /lib/python/matplotlib/axes.py", line 3777, in legend
> label != '' and not label.startswith('_')):
> AttributeError: 'tuple' object has no attribute 'startswith'
>
> In other words the documentation appears to be incorrect that a sequence
> of strings is acceptable.
>
> Any suggestions?
Oops. I was able to answer my own question.
It turns out I was using an ancient version of matplotlib (0.98.5.2) (I
was using a remote server and forgot to check).
The second version does work with matplotlib 1.0.1 and produces a nice
legend with the correct color for each entry. Yaay!
The first version produces a useless legend with all colors the same on
both modern matplotlib and the ancient matplotlib. So use the second
method of specifying label=(...) in the hist command.
-- Russell
------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security
threats, fraudulent activity, and more. Splunk takes this data and makes
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
_______________________________________________
Matplotlib-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users