Późna odpowiedź, ale dwie rzeczy do dodania:
- Aby uzyskać informacje o tym, jak zmienić
'ColorOrder'właściwość i ustawić globalną wartość domyślną za pomocą 'DefaultAxesColorOrder', zobacz „Dodatek” na dole tego posta.
- W centralnej wymianie plików MATLAB znajduje się świetne narzędzie do generowania dowolnej liczby wizualnie różnych kolorów, jeśli masz zestaw narzędzi do przetwarzania obrazu, który go używa. Przeczytaj szczegóły.
Ta ColorOrder axeswłaściwość umożliwia MATLAB-owi automatyczne przełączanie listy kolorów podczas używania hold on/all(ponownie, zobacz Dodatek poniżej, aby dowiedzieć się, jak set/ geta ColorOrderdla określonej osi lub globalnie przez DefaultAxesColorOrder). Jednak domyślnie MATLAB określa tylko krótką listę kolorów ( tylko 7 od R2013b) do przełączenia , az drugiej strony znalezienie dobrego zestawu kolorów dla większej liczby serii danych może być problematyczne. W przypadku 10 działek oczywiście nie można polegać na wartości domyślnej ColorOrder.
Świetnym sposobem na zdefiniowanie N wizualnie odrębnych kolorów jest przesłanie „Generuj maksymalnie percepcyjnie odróżniające się kolory” (GMPDC) w centralnej wymianie plików MATLAB . Najlepiej można to opisać własnymi słowami autora:
Ta funkcja generuje zestaw kolorów, które można rozróżnić na podstawie przestrzeni kolorów „Lab” , która jest bardziej zgodna z postrzeganiem kolorów przez człowieka niż RGB. Biorąc pod uwagę początkową dużą listę możliwych kolorów, iteracyjnie wybiera wpis na liście, który jest najdalszy (w przestrzeni laboratorium) ze wszystkich wcześniej wybranych wpisów.
Na przykład, gdy wymagane jest 25 kolorów:

Zgłoszenie GMPDC zostało wybrane na oficjalnym blogu MathWorks jako Pick of the Week w 2010, po części ze względu na możliwość zażądania dowolnej liczby kolorów (w przeciwieństwie do MATLAB-ów zbudowanych w 7 domyślnych kolorach). Zrobili nawet doskonałą sugestię, aby ustawić MATLAB ColorOrderna starcie na,
distinguishable_colors(20)
Oczywiście możesz ustawić ColorOrderdla pojedynczej osi lub po prostu wygenerować listę kolorów do użycia w dowolny sposób. Na przykład, aby wygenerować 10 „maksymalnie percepcyjnie różnych kolorów” i użyć ich na 10 wykresach na tej samej osi ( ale bez użycia ColorOrder, co wymaga pętli ):
% 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
Proces jest uproszczony, nie wymaga forpętli, z ColorOrderwłaściwością axis :
% X rozmiaru N na P na 2
mpdc10 = odróżnialne_ kolory (10)
ha = osie; przytrzymaj (ha, 'włączony')
set (ha, 'ColorOrder', mpdc10)% --- ustaw ColorOrder TUTAJ ---
plot (X (:,:, 1), X (:,:, 2), '-.')% pętla NIE jest potrzebna, 'Kolor' NIE jest potrzebna. Yay!
DODATEK
Aby uzyskać ColorOrdertablicę RGB używaną dla bieżącej osi,
get(gca,'ColorOrder')
Aby uzyskać ustawienia domyślne ColorOrderdla nowych osi,
get(0,'DefaultAxesColorOrder')
Przykład ustawienia nowego globalnego ColorOrderz 10 kolorami na starcie MATLAB, w startup.m:
set(0,'DefaultAxesColorOrder',distinguishable_colors(10))