Domanda

Ho una serie di linee che ogni necessità di tracciare con un colore diverso. Ogni linea è in realtà costituito da diversi insiemi di dati (positivo, negativo regioni etc.) e quindi mi piacerebbe essere in grado di creare un generatore che alimenta un colore alla volta attraverso uno spettro, per esempio la mappa gist_rainbow mostrato qui .

ho trovato i seguenti lavori, 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, in caso affermativo qual è il modo accettato?

È stato utile?

Soluzione

Per i colori di indice da una specifica mappa di colori è 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))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top