2013-07-07 15 views
5

Ich habe Probleme bei der Kontrolle der Farbe und Linienstyle von Histogramm geplottet mit Matplotlib hist Funktion mit stacked=True. Für ein einzelnes nicht-gestapelte Histogramm, habe ich keine Probleme:FaceColor Kwarg für Matplotlib gestapelten Histogramm

import pylab as P 

mu, sigma = 200, 25 
x0 = mu + sigma*P.randn(10000) 

n, bins, patches = P.hist(
    x0, 20, 
    histtype='stepfilled', 
    facecolor='lightblue' 
    ) 

Allerdings, wenn ich zusätzliche Histogramme einführen,

import pylab as P 

mu, sigma = 200, 25 
x0 = mu + sigma*P.randn(10000) 
x1 = mu + sigma*P.randn(7000) 
x2 = mu + sigma*P.randn(3000) 

n, bins, patches = P.hist(
    [x0,x1,x2], 20, 
    histtype='stepfilled', 
    stacked=True, 
    facecolor=['lightblue','lightgreen','crimson'] 
    ) 

es führt den folgenden Fehler:

ValueError: to_rgba: Invalid rgba arg "['lightblue', 'lightgreen', 'crimson']" 
could not convert string to float: lightblue 

die Verwendung von color=['lightblue', 'lightgreen', 'crimson'] Option funktioniert, aber ich möchte direkte Kontrolle über die Füll- und Linienfarben separat haben, während in der Lage, die benannten Matplotlib Farben zu verwenden. Ich benutze Version 1.2.1 von Matplotlib.

Antwort

3

facecolor braucht eine einzelne benannte Farbe zu sein, nicht eine Liste, aber das Hinzufügen dieser nach Ihrer P.hist Nutzung könnte die Arbeit für Sie erledigen:

for patch in patches[0]: patch.set_facecolor('lightblue') 
for patch in patches[1]: patch.set_facecolor('lightgreen') 
for patch in patches[2]: patch.set_facecolor('crimson') 
+1

, dass die Arbeit getan hat, aber es gibt keine Möglichkeit zu tun das inline mit 'hist'? – xvtk

Verwandte Themen