Creare un generatore di colore dal dato colormap in matplotlib
-
26-09-2019 - |
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?
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