2010-08-29 4 views
15

In matplotlib zeichnet die Linie den Farbzyklus automatisch auf. Diese zwei Liniendiagramme würden unterschiedliche Farben haben.Wie mache ich Balkenplots automatisch über verschiedene Farben?

axes.plot(x1, y) 
axes.plot(x2, y) 

Allerdings Balkenparts nicht. Beide Datenreihen haben blaue Balken.

Wie mache ich die Balkenpläne automatisch über einen vordefinierten Satz von Farben?

Antwort

4

Optional: So verwendet die volle Kontrolle über den Stil Ihrer Figuren eine bestehende mplstyle als Vorlage erhalten: https://github.com/matplotlib/matplotlib/tree/master/lib/matplotlib/mpl-data/stylelib

stellen Sie die Parameter: axes.prop_cycle: Cycler ('Farbe' [. ...])

Last Stil:

from matplotlib import style 
style.use ('PATH TO YOUR MPL STYLE') 

Sie können Ihre oder der Standard Artfarbe Zyklus fast jede Art und Weise wollen Sie durchlaufen:

#!/usr/bin/python 
import matplotlib.pyplot as plt 

#data 
x=[1,2,4] 
y=[11,12,8] 
prop_iter = iter(plt.rcParams['axes.prop_cycle']) 

for i in range(0,len(x)): 
    plt.bar(x[i],y[i],color=next(prop_iter)['color']) 

plt.show() 

plt.rcParams [ ‚axes.prop_cycle‘] packt alle Zyklen, so dass Sie benötigen die richtigen Cycler mit der Taste zur Auswahl ['Farbe'].

Sie können die Iterator Schöpfung fallen und Liste Verständnis und zip verwenden, um einen Liner zu erstellen:

#!/usr/bin/python 
import matplotlib.pyplot as plt 

x=[1,2,4] 
y=[11,12,8] 
prop = plt.rcParams['axes.prop_cycle'] 
[plt.bar(param[0],param[1],color=param[2]['color']) for param in zip(x,y,prop)] 
plt.show() 

enter image description here

3

Aus der Dokumentation bei http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.bar

Die Bar Plots nicht Zyklus Farbe automatisch, aber Sie können die Farbe direkt Eigenschaften, indem die Farbe einstellen könnte. Etwas wie folgt aus:

colors = ['red', 'blue', 'green'] 
i = -1 
def getCycledColor(): 
    global i, colors 
    if i < len(colors) -1 
     i = i + 1 
     return colors[i] 
    else: 
     i = -1 
axes.bar(x1,y,facecolor=getCycledColor()) 
axes.bar(x2,y,facecolor=getCycledColor()) 

Die Farben aus einer vordefinierten Liste ausgewählt werden können und radelte.

+0

, die zwei Bars Plots nur erzeugt, eine mit allen Bars roten und einen mit allen Bars blau (weil 'getCycledColor()' nur einmal aufgerufen wird, wenn 'axes(). bar (..) 'aufgerufen wird –

24

Würde etwas in dieser Richtung für Sie tun?

#!/usr/bin/python 
from matplotlib import cm 
import matplotlib.pyplot as plt 

#data 
x=[1,2,4] 
y=[11,12,8] 

for i in range(0,len(x)): 
    plt.bar(x[i],y[i],color=cm.jet(1.*i/len(x))) 

plt.show() 

Mehr über colormaps.

BEARBEITEN: Siehe this example für das Überfahren einer vordefinierten Farbpalette.