2017-07-29 5 views
0

Ich habe Punkte in R Cluster. Ich möchte eine Abbildung erstellen, iterieren diese R Cluster und in jeder Iteration i, zeichnen Sie Punkte (scatter) von Cluster i mit Farbe, die perzeptuell unterscheidet sich von Farben der Punkte in anderen Clustern.Matplotlibs Äquivalent von Matlabs hsv (m)

In Octave/Matlab, würde ich nur

colors = hsv(R); 
figure; hold on; 
for i = 1:R 
    ... 
    c = colors(i,:); 
    % draw with color c 
    ... 
end 

und jede Zeile/Reihe von Punkten würde von anderen in der so erhaltene leicht unterscheidbar sein. Ich vermisse diese magische hsv(n) Funktion in Matplotlib. Ich war überrascht, dass ich es in weniger als 5 Minuten für Matplotlib nicht googlen konnte, also wird es hoffentlich als Referenz für andere faule dienen.

EDIT:

@ImportanceOfBeingErnest ist richtig. Außerdem weist Matplotlib im Gegensatz zu Matlab für jede Plotoperation unterschiedliche Farben zu: https://stackoverflow.com/a/16006929/214720

+0

Ich konnte [google it] (http://www.google.de/search?q=matplotlib+hsv+colormap) in weniger als einer Minute. – ImportanceOfBeingErnest

Antwort

2

Die HSV-Colormap in Matplotlib heißt (oh Wunder) hsv. Eine Referenz aller Colormaps finden Sie unter Colormap reference.

Beachten Sie, dass Colormaps in Matplotlib zwischen 0 und 1 liegen. Daher müssen Sie möglicherweise die Eingabe für das Anwenden einer Colormap normalisieren.

import matplotlib.pyplot as plt 
import numpy as np 

R = np.linspace(0,1) 
color=plt.cm.hsv(R) 

oder

R = np.linspace(-3,42) 
norm= plt.Normalize(-3,42) 
color=plt.cm.hsv(norm(R))