Pregunta

Tengo una serie de líneas que cada necesidad que se pintarán con un color distinto. Cada línea se compone realmente de varios conjuntos de datos (positivas, negativas regiones etc.) y por eso me gustaría ser capaz de crear un generador que alimentará a un color a la vez a través de un espectro, por ejemplo, el mapa gist_rainbow muestra aquí .

he encontrado las siguientes obras pero parece muy complicado y lo más importante difíciles de recordar,

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)

Por otra parte, no cubre la gama de colores en el mapa gist_rainbow, tengo que volver a definir un mapa.

Tal vez un generador no es la mejor manera de hacer esto, si es así cuál es la forma aceptada?

¿Fue útil?

Solución

Para los colores de índice de un mapa de colores específica que puede utilizar:

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))
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top