2016-05-18 3 views
0

J'ai essayé le code ci-dessous:Comment définir une palette de couleurs qui peut me donner plus de 20 couleurs distinctes dans matplotlib?

number = 20 
cmap = plt.get_cmap('gist_rainbow') 
colors = [cmap(i) for i in np.linspace(0, 1, number)] 

Cela peut générer un ensemble de couleurs, mais pas si distincte. En fait, les parcelles les plus proches ont presque la même couleur. J'ai également essayé 'jet' et 'nipy_spectral' selon http://matplotlib.org/examples/color/colormaps_reference.html. Cependant, ils ne sont pas si satisfaisants.

Quelqu'un peut-il m'aider?

Répondre

1

Vous pouvez générer un certain nombre de couleurs distinctes à l'aide de l'espace de couleurs HLS, au lieu d'extraire les couleurs d'un cmap matplotlib.

En particulier, des couleurs distinctes dépendent de teintes différentes. Essayez quelque chose comme ceci:

from colorsys import hls_to_rgb 
import numpy as np 

def get_distinct_colors(n): 

    colors = [] 

    for i in np.arange(0., 360., 360./n): 
     h = i/360. 
     l = (50 + np.random.rand() * 10)/100. 
     s = (90 + np.random.rand() * 10)/100. 
     colors.append(hls_to_rgb(h, l, s)) 

    return colors 
+0

Votre solution est meilleure que la cmap matplotlib, mais a encore quelques couleurs qui semble presque la même chose. Comment éviter cela? –