Crie um gerador de cores a partir do dado colormap em matplotlib
-
26-09-2019 - |
Pergunta
Eu tenho uma série de linhas que precisam ser plotadas com uma cor separada. Cada linha é na verdade composta de vários conjuntos de dados (regiões positivas, negativas etc.) e, portanto, eu gostaria de poder criar um gerador que alimentará uma cor de cada vez em um espectro, por exemplo, o gist_rainbow
mapa mostrado aqui.
Eu encontrei as seguintes obras, mas parece muito complicado e mais importante para lembrar,
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)
Além disso, não cobre a gama de cores no gist_rainbow
Mapa, eu tenho que redefinir um mapa.
Talvez um gerador não seja a melhor maneira de fazer isso, se sim, qual é a maneira aceita?
Solução
Para indexar as cores de um colorido específico que você pode usar:
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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow