2016-03-28 6 views
3

私は散布図を作成した3つの異なるデータセットを持っています。異なる色でコード化された異なるデータセット。最小二乗線は、MATLABを介して散布図の各データセットと同じ色を与える方法はありますか?

私のコードは以下のようになります。今

clear all; 
close all; 

% my colormap 
colormap = [0, 0, 0 
      0.5, 0.5, 0.5 
      0, 0.5, 0.5]; 

% x values of 3 different datasets 
xvalues = [10 20 30; 35 65 95; 22 42 82]; 

% y values of 3 different datasets 
yvalues = [1 2 3; 6 12 24; 2 4 8]; 

figure; 
axis([0 90 0 30]); 

% loop for each dataset 
for i = 1:3 

    x = xvalues(i,:);  
    y = yvalues(i,:); 
    scatter(x,y, 60, colormap(i,:)); hold on;  

end 

、私はそれぞれのデータセットの色のデータセットのそれぞれについて、最小二乗の行を追加したいと思います。

Iは、コードの末尾に追加:これは最小二乗線追加され

% add least-squares lines to scatter plot 
h = lsline; 
set(h,'linewidth',2,'color',colormap(i,:)); 

- 同じ色でそれらのすべてを。

は、どのように私はあなたの軸上に複数のプロットのオブジェクトを持っている場合は散布図

1

答えて

1

lslineにそれぞれのデータセットに使用する色はa vector of line objectsを返します最小二乗線のそれぞれを与えることができます。個別に色を設定する必要があります。

hlines = lsline; 
for k = 1:numel(hlines) 
    set(hlines(k), 'Color', colormap(k, :)) 
end 

あなたはそれをやっている方法、あなたはcolormap(3,:)で指定された色であることをすべて最もフィットするラインを設定しています。

enter image description here

あなたは、標準のプロットではなくscatterは(あなたが一定の色とサイズを使用しているので、ここで飛散してもメリットはありません)オブジェクトを使用する場合

、そしてlslineは自動的にオブジェクトの色を一致させる必要があります。 はありませんこれはscatterのプロットで行います。通常、各データポイントの色が異なるためです。

figure; 
axis([0 90 0 30]); 

% loop for each dataset 
for k = 1:3 
    x = xvalues(k,:);  
    y = yvalues(k,:); 
    plot(x, y, 'o', 'Color', colormap(k,:)); 
    hold on;  
end 

lsline; 
+0

ありがとうございます。私はこれを置き換えるのが正しいことを理解しましたか?h = lsline; (h、 '線幅'、2、 '色'、カラーマップ(i、:));そのコードによって: hlines = lsline; k = 1の場合:numle(hlines) (hlines(k)、 'color'、カラーマップ(i、:)) end ジョブを実行する必要がありますか?残念ながら、私は同じ出力を取得します。すべての行は同じ色です。 –

+0

@annewあなたがタイプミスの間にそれをつかんだようです。しかし、どのラインを置き換えるべきかは正しいですが、 'colormap(i、:)'ではなく 'colormap(k、:)'でなければなりません。上記の更新されたコードを参照してください – Suever

関連する問題