2013-07-07 10 views
5

Mam problem z kontrolowaniem koloru i stylu liniowego histogramu wykreślonego przy użyciu funkcji Matplotlib's hist z stacked=True. Dla pojedynczej zakaz ułożone histogramu, nie mam problemów:facecolor kwarg dla Matplotlib skumulowany histogram

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' 
    ) 

Jednak, kiedy wprowadzają dodatkowe histogramy,

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'] 
    ) 

zgłasza następujący błąd:

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

Używanie Opcja color=['lightblue', 'lightgreen', 'crimson'] działa, ale chciałbym mieć bezpośrednią kontrolę nad kolorami wypełnienia i linii oddzielnie, mając jednocześnie możliwość używania nazwanych kolorów Matplotlib. Używam wersji 1.2.1 programu Matplotlib.

Odpowiedz

3

facecolor musi być pojedynczym nazwany kolor, a nie lista, ale dodanie tego po swoją Wykorzystanie P.hist może to zadanie dla Ciebie:

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

To nie działa, ale to nie ma sposobu, aby zrobić to jest zgodne z 'hist'? – xvtk