遅い答えですが、追加する2つのこと:
- プロパティを変更する
'ColorOrder'
方法と でグローバル デフォルトを設定する方法'DefaultAxesColorOrder'
については、この投稿の下部にある「付録」を参照してください。
- Image Processing Toolbox を使用する場合、MATLAB Central File Exchange には視覚的に異なる色をいくつでも生成できる優れたツールがあります。詳細については、以下をお読みください。
このColorOrder
axes
プロパティを使用すると、MATLAB は使用時に色のリストを自動的に循環できます(繰り返しますが、方法については、以下の付録hold on/all
を参照してください)。ただし、既定では、MATLAB は循環する色の短いリスト ( R2013b の時点でわずか 7つ) のみを指定します。その一方で、より多くのデータ系列に対して適切な色のセットを見つけるのは問題になる可能性があります。10 個のプロットの場合、明らかに既定値に依存することはできません。set
get
ColorOrder
DefaultAxesColorOrder
ColorOrder
N 個の視覚的に異なる色を定義する優れた方法は、MATLAB Central File File Exchangeの"Generate Maximally Perceptually-Distinct Colors" (GMPDC) サブミッションを使用することです。それは、著者自身の言葉で最もよく説明されています。
この関数は、「Lab」色空間を参照することで識別可能な一連の色を生成します。この色空間は、RGB よりも人間の色の知覚により近いものです。可能な色の最初の大きなリストが与えられると、以前に選択されたすべてのエントリから (Lab 空間で) 最も遠いリスト内のエントリが繰り返し選択されます。
たとえば、25 色が要求された場合:

GMPDC 提出物は、MathWorks の公式ブログで 2010 年の Pick of the Weekに選ばれました。その理由の 1 つは、任意の数の色を要求できることです (MATLAB に組み込まれている 7 つの既定の色とは対照的です)。ColorOrder
彼らは、起動時にMATLAB を次のように設定するという優れた提案さえしました。
distinguishable_colors(20)
もちろん、ColorOrder
単一の軸に を設定することも、好きなように使用する色のリストを生成することもできます。たとえば、10 個の「最大限に知覚的に異なる色」を生成し、それらを同じ軸上の 10 個のプロットに使用するには (ただし、 を使用しないColorOrder
ため、ループが必要です):
% 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
axis プロパティを使用すると、プロセスが単純化され、ループが不要for
ColorOrder
になります。
サイズ N x P x 2 の % X
mpdc10 = 区別可能な_色 (10)
ha = 軸; ホールド(ハ、オン)
set(ha,'ColorOrder',mpdc10) % ---ここでColorOrder を設定---
plot(X(:,:,1),X(:,:,2),'-.') %ループは必要ありません。'Color' は必要ありません。わーい!
付録
ColorOrder
現在の軸に使用される RGB 配列を取得するには、
get(gca,'ColorOrder')
ColorOrder
新しい軸のデフォルトを取得するには、
get(0,'DefaultAxesColorOrder')
ColorOrder
MATLAB の起動時に 10 色で新しいグローバルを設定する例startup.m
:
set(0,'DefaultAxesColorOrder',distinguishable_colors(10))