2010-07-12 14 views
21

Ich habe 6 Vektoren, die ich plotten möchte. Wie kann ich jede Handlung mit unterschiedlicher Farbe (zufällig) machen? Mit dem folgenden Code ist der Plot für alle sechs Vektoren auf eine Farbe beschränkt.Matlab wählen zufällige Farbe zum Plotten

plot(x,y,'-rs','LineWidth',1,... 
     'MarkerEdgeColor','k',... 
     'MarkerFaceColor','g',... 
     'MarkerSize',5); 
+0

mögliche Duplikate von [Zeichnen Sie automatisch verschiedene farbige Linien in MATLAB] (http://stackoverflow.com/questions/2028818/automatic-plot-different-colored-lines-in-matlab) – gnovice

Antwort

40

Sie können PLOT automatisch Linienfarben für Sie wählen. Wenn alle 6 Vektoren die gleiche Länge haben, können Sie die X- und Y-Koordinaten in N-mal-6-Matrizen X und Y eingeben und diese an PLOT übergeben. Eine andere Farbe wird für jede Spalte verwendet werden:

plot(X,Y,'-s'); %# Plots lines with square markers 

Sie auch einige der eingebaut in colormaps verwenden könnten eine Reihe von Farben zu erzeugen, diese dann verwenden, wenn Sie jede Zeile einzeln zeichnen. Zum Beispiel:

cmap = hsv(6); %# Creates a 6-by-3 set of colors from the HSV colormap 
for i = 1:6  %# Loop 6 times 
    plot(X(:,i),Y(:,i),'-s','Color',cmap(i,:)); %# Plot each column with a 
               %# different color 
end 
+0

vielen Dank. Ich frage mich, ob ich z. 21 verschiedene Vektoren, kann ich die cmap = hsv (6) zu cmap = hsv (21) ändern – Jessy

+0

@Jessy: Ja, 'hsv (N)' gibt eine N-mal-3-Farbkarte mit einer RGB-Farbe pro Zeile zurück. – gnovice

+2

+1 für die Verwendung von Colormaps. Ich habe festgestellt, dass rein zufällige Farben für die Darstellung sehr schlecht sind - der Kontrast zwischen den Farben reicht oft nicht aus und die Farben sind zu hell oder zu dunkel. Das gleichmäßige Abtasten entlang einer der Standard-Farbkarten bietet viel angenehmere und besser lesbare Farbkombinationen. – Kena

4

eine zufällige Farbkarte zu erstellen, können Sie folgendes tun

myMap = rand(nbColors, 3); 
for i = 1:nbColors 
    plot(X(:,i),Y(:,i),'-s','Color',myMap(i,:)); 
end 

Aber, wie ich in meinem Kommentar zu gnovice Antwort angegeben, Farben aus einem colormap Kommissionierung stellt im Allgemeinen viel besser lesbare Farbkombinationen.