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?

Était-ce utile?

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))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top