Créer un générateur de couleur de colormap donné matplotlib
-
26-09-2019 - |
Question
J'ai une série de lignes que chaque besoin d'être comploté avec une couleur distincte. Chaque ligne est en fait composé de plusieurs ensembles de données (positives, régions négatives etc.) et donc je voudrais être en mesure de créer un générateur qui alimentera une couleur à la fois à travers un spectre, par exemple la carte de gist_rainbow
montré ici .
J'ai trouvé les travaux suivants, mais il semble très compliqué et plus important encore difficile de se rappeler,
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)
En outre, elle ne couvre pas la gamme de couleurs dans la carte de gist_rainbow
, je dois redéfinir une carte.
Peut-être un générateur est pas la meilleure façon de le faire, si oui, quelle est la façon acceptée?
La solution
Pour les couleurs d'index à partir d'une palette de couleurs spécifique, vous pouvez utiliser:
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))