David Simpson <[EMAIL PROTECTED]> writes:

> This is probably my lack of knowledge of python, but how do I set up
> legend labels for some bar-plots that have been produced inside a 
> function. For example, the following will nicely plot my bar-plots, but 
> then legend doesn't know about the colours used, so here just uses black 
> for both labels.

Legends for multiple histograms don't behave the way people expect,
because the colors are taken bar by bar, first from one histogram, then
from the second histogram, etc. You need to take just one bar from each
histogram and pass them as the first argument to legend:

------------------------------------------------------------------------
from pylab import *

x=arange(0,5)
y=array([ 1.2, 3.4, 5.4, 2.3, 1.0])
z=array([ 2.2, 0.7, 0.4, 1.3, 1.2])

def plotb(x,y,col):
         p=bar(x,y,color=col)
         return p[0]

p1 = plotb(x,y,'k')
p2 = plotb(x+0.4,z,'y')

legend((p1, p2), ('YYY','ZZZ'))
show()
------------------------------------------------------------------------

I think this behavior of legend is suboptimal, but there is a logic to
it: by default you label objects in the order you draw them, and the
histogram plot happens to consist of several similarly-colored objects.

-- 
Jouni K. Seppänen
http://www.iki.fi/jks


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to