2014-11-05 120 views
0

我有三個相同長度的向量:x,ycls。我想製作x和y的二維圖,但每個點的顏色應與cls的值相對應。如何在Matlab中使用取決於值的顏色製作2D散點圖?

我曾考慮過使用scatter函數,但您可以拼湊整個圖的顏色,而不是特定元素的顏色。有任何想法嗎?

我想獲得像在這個例子中,當cls有三個值的元素:

enter image description here

回答

2

從分散的幫助:

散射(X,Y,A, c)指定圓的顏色。要使用相同顏色繪製所有圓,請將c指定爲單個顏色字符串或RGB三元組。要使用不同的顏色,請將c指定爲RGB三元組的向量或三列矩陣。

您可以構建C作爲

c=zeros(size(x),3); 
c(cls==1,:)=[1 0 0]; % 1 is red 
% ... 
scatter(x,y,1,c) 

不過,我不知道該怎麼做了背景。你是否應用了一些機器學習算法來分類數據?也許你可以從方程中獲得方程來繪製背景,但這取決於方法。

0

這裏的另一種解決方案使用邏輯索引在三個分割你的數據:

% Some random data 
x = rand(100,1); 
y = rand(100,1); 
cls = round(2*rand(100,1)); 

% Split the data in three groups depending on the value in cls 
x_red = x(cls==0); 
y_red = y(cls==0); 
x_green = x(cls==1); 
y_green = y(cls==1); 
x_blue = x(cls==2); 
y_blue = y(cls==2); 

% plot the data 
scatter(x_red,y_red,1,'r') 
hold on 
scatter(x_green,y_green,1,'g') 
scatter(x_blue,y_blue,1,'b') 
hold off 
+1

如果您經歷了自己分割數據的努力,並且不使用'scatter'的附加功能(例如,每個點不同的顏色/大小),你可以簡單地用'line'對象(_with_''Linestyle','none','Marker','o'')來繪製你的每個組。如果您有大量的點數,性能會有所提高。 – Hoki 2014-11-05 12:51:00

+0

@Hoki謝謝,好點。 – am304 2014-11-05 13:01:39

1

如果您有統計工具箱,有這樣做的一個簡單的方法,這就是所謂的gscatter

它需要類似的輸入scatter,但第三個輸入是組:

gscatter(x,y,cls) 

您可以添加顏色和標誌 - 這個地塊紅色,然後綠色,然後藍(由內容確定的順序cls,所有標記界

gscatter(x,y,cls,'rgb','o') 
0

一個與c是顏色矢量很簡單的解決辦法:

scatter3(X,Y,zeros(size(X,1)),4,c);  
view(0,90); 
相關問題