3

複数のデータセットを重ねる散布図があります。現在、データの各セットは、デフォルトのカラーマップで次の色として表示されます。これは今私のコードです:

figure
hold on
for i=1:10
   scatter(RunRawArea(i,:), RunRawNetLength(i,:));
end
hold off

私が望むのは、データの各セット (i でインデックス付けされたもの) を色分けして、グラデーションの次の色にすることです。たとえば、i=1 のデータは青、i=5 は紫、i=10 は赤になります。

どうすればこれを行うことができますか?

4

2 に答える 2

1

別のパラメータを追加する必要がありますscatter- と呼ばれるCData

https://www.mathworks.com/help/matlab/ref/scatter.html

説明: scatter(x,y) は、ベクトル x および y で指定された位置に円を含む散布図を作成します。このタイプのグラフは、バブル プロットとも呼ばれます。

あなたの例では:

figure
hold on
colorVec = linspace(1,0, size(RunRawNetLength,1));
colorVec = transpose(colorVec);
colorVec = repmat(colorVec,[1 3]);
for i=1:10
   scatter(RunRawArea(i,:), RunRawNetLength(i,:),'CData', colorVec );
end
hold off
于 2012-07-08T16:22:57.337 に答える
0

方法 1:

データをベクトル化できるため、ループは必要なく、シリーズごとに色を追加する必要はありません。

% specify your color map:
colorCode = lines(size(RunRawNetLength,1)); % or any other colormap...
% define the correct color for each series:
coloVev = repmat(colorCode,size(RunRawNetLength,1),1);
% plot it all at once without a loop:
scatter(RunRawArea(:),RunRawNetLength(:),[],coloVev)

方法 2:

Statistics and Machine Learning Toolbox をお持ちの場合は、次を使用してこれを行うこともできますgscatter

% define the series of data:
group = repmat(1:size(RunRawNetLength,1),1,size(RunRawNetLength,1));
% plot it all at once without a loop:
gscatter(RunRawArea(:),RunRawNetLength(:),group,colorCode);

カラーマップがすべての系列に対して十分な色を持っていない場合、関数はループして最初の系列から開始します。

結果:

どちらの場合も、ランダム データの結果は次のようになります (主な違いは、gscatterデフォルトでデータ ポイントを埋めて凡例を追加することです)。

gscatter デモ

linesエントリが 7 つしかないカラーマップを使用したことに注意してください。したがって、この例では 10 シリーズで繰り返されます。

于 2017-01-07T21:13:46.120 に答える