2016-05-18 8 views
0

Ich habe den Code unten versucht:Wie man eine Colormap einstellt, die mir über 20 verschiedene Farben in Matplotlib geben kann?

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

Dieser eine Satz von Farben erzeugen kann, aber nicht so ausgeprägt. In der Tat haben die nächsten Grundstücke fast die gleiche Farbe. Ich versuchte auch 'jet' und 'nipy_spectral' entsprechend http://matplotlib.org/examples/color/colormaps_reference.html. Sie sind jedoch nicht so befriedigend.

Jeder kann mir helfen?

Antwort

1

Mit dem HLS-Farbraum können Sie mehrere unterschiedliche Farben erzeugen, anstatt die Farben aus einer Matplotlib-cmap zu extrahieren.

Insbesondere unterschiedliche Farben hängen von unterschiedlichen Farbtönen ab. Versuchen Sie etwas wie folgt:

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

Ihre Lösung ist besser als die Matplotlib cmap, aber hat immer noch einige Farben, die fast gleich aussieht. Wie vermeide ich das? –

Verwandte Themen