2010-06-10 13 views
11

Ho una serie di linee che devono essere tracciate ciascuna con un colore separato. Ogni linea è in realtà composta da diversi set di dati (regioni positive, negative, ecc.) E quindi mi piacerebbe essere in grado di creare un generatore che alimenterà un colore alla volta su uno spettro, ad esempio la mappa gist_rainbowshown here.Creare un generatore di colori da una data mappa in matplotlib

Ho trovato le seguenti opere ma sembra molto complicato e soprattutto difficile da ricordare,

from pylab import * 

NUM_COLORS = 22 

mp = cm.datad['gist_rainbow'] 
get_color = matplotlib.colors.LinearSegmentedColormap.from_list(mp, colors=['r', 'b'], N=NUM_COLORS) 
... 
# Then in a for loop 
    this_color = get_color(float(i)/NUM_COLORS) 

Inoltre, non copre la gamma di colori nella mappa gist_rainbow, devo ridefinire una mappa .

Forse un generatore non è il modo migliore per farlo, se sì, qual è il modo accettato?

risposta

18

Per i colori indice da una mappa di colori specifica è possibile utilizzare:

import pylab 
NUM_COLORS = 22 

cm = pylab.get_cmap('gist_rainbow') 
for i in range(NUM_COLORS): 
    color = cm(1.*i/NUM_COLORS) # color will now be an RGBA tuple 

# or if you really want a generator: 
cgen = (cm(1.*i/NUM_COLORS) for i in range(NUM_COLORS)) 
+0

: Ciao, volevo chiederti come posso usare questo nella mia program.I avere per esempio le cellule che hanno valori interi (vuoto = 0, pieno = 1 ..). Come posso fare in modo che "vuoto" corrisponda al colore "rosso", completo di colore bianco ecc. Ho una funzione in cui faccio la trama ".... im = plt.imshow (mydata, cmap = plt.get_cmap ('gist_earth')) ".Come devo implementare quanto sopra? (se diciamo la stessa cosa). Grazie! – George

+0

@George: come lo descrivi, non sono sicuro del perché questo non funzioni per te. Magari postare una domanda completa con un piccolo esempio. – tom10

+0

: Se puoi controllare qui http://stackoverflow.com/questions/8929456/how-to-create-a-movie-in-relation-to-matlab (nella parte aggiornata) dove creo il grafico.Come può implemento il tuo esempio? (Se insisti, pubblicherò una nuova risposta) Grazie! – George

Problemi correlati