Создание цветового генератора из заданной цветовой карты в matplotlib
У меня есть серия строк, каждая из которых должна быть построена с отдельным цветом. Каждая строка фактически состоит из нескольких наборов данных (положительных, отрицательных областей и т.д.), И поэтому я хотел бы иметь возможность создавать генератор, который будет подавать один цвет за раз по спектру, например карту gist_rainbow
показано здесь.
Я нашел следующие работы, но кажется очень сложным и, что более важно, трудно запомнить,
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)
Кроме того, он не охватывает диапазон цветов на карте gist_rainbow
, я должен переопределить карту.
Может быть, генератор - не лучший способ сделать это, если так, то что принято?
Ответы
Ответ 1
Чтобы индексировать цвета из определенной цветовой карты, вы можете использовать:
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))