2010-12-08 16 views
12

Ist es möglich, die Farben zu ändern, die Matplotlib durchläuft, wenn es seine eigenen Farben für die Linien eines Graphen erzeugt? Ich benutze das pylab Modul.Matplotlib Farbpalette

from pylab import * 
import matplotlib.cm as cm 

x=[1,2,3,4] 
y=[5,6,7,8] 

fig1 = Figure() 

plot1 = fig1.add_subplot(311) 
plot1.plot(x,y) 

plot2 = fig1.add_subplot(312) 
plot2.plot(x,y) 

plot3 = fig1.add_subplot(313) 
plot3.plot(x,y) 

Antwort

12

Die Farben werden aus Farbkarten extrahiert. Sie können one of the predefined colormaps oder define your own verwenden.

Leider gibt es keine Möglichkeit mehrere Farbtabellen pro Figur zu verwenden, müssen Sie es manuell tun:

import pylab as pl 
import matplotlib.cm as cm 

xval = pl.arange(0, 20, 0.2) 

pl.subplot(311) 
pl.plot(xval, pl.sin(xval), c=cm.summer(0)) 

pl.subplot(312) 
pl.plot(xval, pl.cos(xval), c=cm.spring(0)) 

pl.subplot(313) 
pl.plot(xval, pl.arctan(xval), xval, pl.fabs(xval)) 

pl.show() 

+0

Wie Sie tatsächlich die colormap auf dem Grundstück bewerben? Ich erhalte Fehler, wenn ich es auf die Figur, einen Teilplot usw. anwende. Ist es ein esoterisches Bibliotheksmodul? – thenickname

+0

Es ist überhaupt nicht esoterisch, Matplotlib benutzt es die ganze Zeit. Was hast du versucht? Es gibt viele Möglichkeiten, eine Colormap anzuwenden: Verwenden der vordefinierten Methoden im 'pyplot' /' pylab'-Modul, Verwenden von Schlüsselwortargumenten oder manuelles Extrahieren von Farben durch Aufruf des Colormap-Objekts. – Philipp

+0

Gibt es eine Möglichkeit, die Figur so einzustellen, dass sie nur Farben aus einer der Colormaps zieht? – thenickname

22

Ja, natürlich. Da es viele Arten der Farbdefinition akzeptiert. Es ist einfach, eine eigene Farbkarte zu definieren. Hier bekomme ich nur Farben aus der colormap hot

import pylab as py 
import numpy as np 
import matplotlib.cm as cm 
a = np.arange(0,10) 

py.figure() 
for i in np.arange(10): 
    c = cm.hot(i/10.,1) 
    py.plot(a,i*a,color=c) 

py.show() 

alt text

+0

Also, ich habe eine Figur, die drei Unterplots enthält. Wenn ich eine Colormap auf einen der drei Subplots anwenden wollte, konnte ich 'c = cm.hot' gefolgt von 'a_plot.plot (x, y, color = c)' sagen? – thenickname

+0

Wenn Sie eine ganze Colormap anwenden möchten, verwenden Sie stattdessen 'cmap' kwarg, oder wählen Sie einfach die Colormap mit' py.hot() '. – Philipp

+0

@Philipp, bist du sicher, dass es funktioniert? Ich weiß nicht, wie man es mit "Plot" benutzt. – gerry