自動的にプロットの異なる色のライン
-
19-09-2019 - |
質問
ようにしているプロット数のカーネル密度推定を同一グラフにおいてすべてすると色が異なる特徴があります。いkludgedソリューション文字列 'rgbcmyk'
よびステッピングを通じてそれぞれ別個のプロットが、だんだんと重複後の7回.あり/より効率的に行うこととなりますが、カラーバリエーション?
for n=1:10
source(n).data=normrnd(rand()*100,abs(rand()*50),100,1); %generate random data
end
cstring='rgbcmyk'; % color string
figure
hold on
for n=1:length(source)
[f,x]=ksdensity(source(n).data); % calculate the distribution
plot(x,f,cstring(mod(n,7)+1)) % plot with a different color each time
end
解決
あなたは色のセットを生成するためにこのようなHSVとしてカラーマップを使用することができます。たとえばます:
cc=hsv(12);
figure;
hold on;
for i=1:12
plot([0 1],[0 i],'color',cc(i,:));
end
MATLABは、13枚の異なる名前のカラーマップ(の 'ドキュメントのカラーマップ' のは、それらすべてが一覧表示されます)があります。
異なる色でラインをプロットするための別のオプションは、ののLineStyleOrder のプロパティを使用することです。 は、MATLABドキュメントにをプロットするための線の色の定義を参照してください詳しくます。
他のヒント
実際には、サイクルに色を取得するためのまともなショートカットメソッドはhold all;
の代わりにhold on;
を使用することです。それぞれの連続plot
は、MATLABのデフォルトのカラーマップを通じて(自動的に)回転します。
hold
の上のMATLABサイトから:
hold all
は、プロットとその後のプロットコマンドは、リストの先頭にのColorOrderとのLineStyleOrderプロパティの値をリセットしないように、現在の線色と線のスタイルを保持しています。プロットコマンドは、最後のプロットがリストに停止した場所から定義済みの色や線種を通じてサイクリングを続けています。
遅い応答、二つのことに追加:
- 情報の変更方法
'ColorOrder'
件の設定方法は、グローバルなデフォルトと'DefaultAxesColorOrder'
, は、"付録"の底ます。 - あなツールMATLABファイルの中央交流の発生は見ごたえのある色合いの画像処理ツールボックスを使用します。読み取ります。
の ColorOrder
axes
財産 できるMATLABを自動的にサイクルを通じてリストの色利用の場合 hold on/all
(再録を参照以下の方法 set
/get
の ColorOrder
特定の軸は世界経由 DefaultAxesColorOrder
).しかし、デフォルト MATLABを指定するだけでショートリストの作品の時間的、空間的感覚が、鑑わずか7 としてのR2013b) サイクルを通じて、一方で問題があるから良いセットの色はデータシリーズです。のための10のプロット、明らかにできなデフォルトの ColorOrder
.
いる方へ の定義N視覚的に異なる色 は "を最大限に知覚-色"(GMPDC提出のMATLAB中央ファイルのファイル交換.では、著者自身の言葉を借りると
この機能を生成するセットの色による識別が可能に "研究室"カラースペース, は、合ヒトの色知覚によRGBとなります。された初期の大型リストの色、選択を繰り返に入ると、リストの一番遠い(ラボスペース)から、先に選ばれた作品の応募がありました。
例えば、25色合:
のGMPDC提出されMathWorks'オフィシャルブログとして 送迎に 2010年度での能力をご希望の場合は、任意の色数としてのMATLABの構築に7のデフォルト色).でも、優れた提案をセットするMATLABの ColorOrder
起動時に、
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
の工程を簡略化し、 不要 for
ループの ColorOrder
軸のプロパティ:
% X of size N-by-P-by-2 mpdc10 = distinguishable_colors(10) ha = axes; hold(ha,'on') set(ha,'ColorOrder',mpdc10) % --- 設定ColorOrderこちら --- plot(X(:,:,1),X(:,:,2),'-.') % ループを必要とせず'Color'を必要としません。わーい!
付録
を取得 ColorOrder
RGB使用される配列は、現在の軸
get(gca,'ColorOrder')
のデフォルト ColorOrder
新しい軸
get(0,'DefaultAxesColorOrder')
設定の例の新規グローバル ColorOrder
10色のMATLAB、 startup.m
:
set(0,'DefaultAxesColorOrder',distinguishable_colors(10))
パーティーに遅いです。私はこれに自分自身を見て、これはオプションと呼ばれるのColorOrderを軸の周りにだけ発見されました あなたは、セッションのか、単に数字の色の順序を指定して、単にアレイをプロットし、指定された色によってMATLABに自動的にサイクルをさせることができます。
の変更を参照してください例
set(0,'DefaultAxesColorOrder',jet(5))
A=rand(10,5);
plot(A);
、マトリックスを作成し、それをプロットします。
各列は、自動的に別の色でプロットされています
そして、あなたが列を示すためにlegend
を使用することができます:
data = randn(100, 5);
figure;
plot(data);
legend(cellstr(num2str((1:size(data,2))')))
それとも、あなたはカーネル名のセルを持っている場合、使用します。
legend(names)