質問

ようにしているプロット数のカーネル密度推定を同一グラフにおいてすべてすると色が異なる特徴があります。い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/getColorOrder 特定の軸は世界経由 DefaultAxesColorOrder).しかし、デフォルト MATLABを指定するだけでショートリストの作品の時間的、空間的感覚が、鑑わずか7 としてのR2013b) サイクルを通じて、一方で問題があるから良いセットの色はデータシリーズです。のための10のプロット、明らかにできなデフォルトの ColorOrder.

いる方へ の定義N視覚的に異なる色"を最大限に知覚-色"(GMPDC提出のMATLAB中央ファイルのファイル交換.では、著者自身の言葉を借りると

この機能を生成するセットの色による識別が可能に "研究室"カラースペース, は、合ヒトの色知覚によRGBとなります。された初期の大型リストの色、選択を繰り返に入ると、リストの一番遠い(ラボスペース)から、先に選ばれた作品の応募がありました。

例えば、25色合:

25 "maximally perceptually-distinct colors"

の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に自動的にサイクルをさせることができます。

がデフォルトのColorOrderする

の変更を参照してください

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)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top