Späte Antwort, aber zwei Dinge hinzuzufügen:
- Informationen zum Ändern der
'ColorOrder'
Eigenschaft und zum Festlegen eines globalen Standards 'DefaultAxesColorOrder'
finden Sie im "Anhang" am Ende dieses Beitrags.
- In MATLAB Central File Exchange gibt es ein großartiges Tool zum Generieren einer beliebigen Anzahl von visuell unterschiedlichen Farben, wenn Sie über die Bildverarbeitungs-Toolbox verfügen, um diese zu verwenden. Lesen Sie weiter für Details.
Die ColorOrder
axes
Eigenschaft ermöglicht MATLAB automatisch Zyklus durch eine Liste von Farben bei der Verwendung von hold on/all
(wieder, siehe Anhang unten , wie man set
/ get
die ColorOrder
für eine bestimmte Achse oder global über DefaultAxesColorOrder
). Standardmäßig gibt MATLAB jedoch nur eine kurze Liste von Farben an ( nur 7 ab R2013b) , die durchlaufen werden sollen. Andererseits kann es problematisch sein, einen guten Satz von Farben für mehr Datenreihen zu finden. Bei 10 Plots können Sie sich offensichtlich nicht auf die Standardeinstellung verlassen ColorOrder
.
Eine gute Möglichkeit , N visuell unterschiedliche Farben zu definieren, ist die GMPDC-Übermittlung "Generate Maximally Perceptually Distinct Colors" im MATLAB Central File File Exchange . Es wird am besten mit den eigenen Worten des Autors beschrieben:
Diese Funktion erzeugt eine Reihe von Farben, die anhand des "Lab" -Farbraums unterscheidbar sind , der der menschlichen Farbwahrnehmung besser entspricht als RGB. Bei einer anfänglich großen Liste möglicher Farben wird iterativ der Eintrag in der Liste ausgewählt, der am weitesten (im Laborbereich) von allen zuvor ausgewählten Einträgen entfernt ist.
Zum Beispiel, wenn 25 Farben angefordert werden:
Die GMPDC-Einreichung wurde im offiziellen Blog von MathWorks 2010 als Auswahl der Woche ausgewählt, unter anderem aufgrund der Möglichkeit, eine beliebige Anzahl von Farben anzufordern (im Gegensatz zu MATLABs in 7 Standardfarben). Sie machten sogar den ausgezeichneten Vorschlag, MATLABs beim ColorOrder
Start auf zu setzen,
distinguishable_colors(20)
Natürlich können Sie die ColorOrder
für eine einzelne Achse festlegen oder einfach eine Liste von Farben erstellen, die Sie nach Belieben verwenden können. Zum Beispiel, um 10 "maximal wahrnehmungsmäßig unterschiedliche Farben" zu erzeugen und sie für 10 Diagramme auf derselben Achse zu verwenden ( aber nicht zu verwenden ColorOrder
, wodurch eine Schleife erforderlich ist ):
% Starting with X of size N-by-P-by-2, where P is number of plots
mpdc10 = distinguishable_colors(10) % 10x3 color list
hold on
for ii=1:size(X,2),
plot(X(:,ii,1),X(:,ii,2),'.','Color',mpdc10(ii,:));
end
Der Prozess wird mit der Eigenschaft axis vereinfacht und erfordert keine for
SchleifeColorOrder
:
% X der Größe N-mal-P-mal-2
mpdc10 = unterscheidbare Farben (10)
ha = Achsen; halten (ha, 'on')
set (ha, 'ColorOrder', mpdc10)% --- setze ColorOrder HIER ---
Plot (X (:,:, 1), X (:,:, 2), '-.')% Schleife NICHT benötigt, 'Farbe' NICHT benötigt. Yay!
BLINDDARM
Um das ColorOrder
für die aktuelle Achse verwendete RGB-Array abzurufen,
get(gca,'ColorOrder')
Um die Standardeinstellung ColorOrder
für neue Achsen zu erhalten,
get(0,'DefaultAxesColorOrder')
Beispiel für das Festlegen eines neuen globalen Bereichs ColorOrder
mit 10 Farben beim Start von MATLAB in startup.m
:
set(0,'DefaultAxesColorOrder',distinguishable_colors(10))