我有三個相同長度的向量:x
,y
和cls
。我想製作x和y的二維圖,但每個點的顏色應與cls
的值相對應。如何在Matlab中使用取決於值的顏色製作2D散點圖?
我曾考慮過使用scatter
函數,但您可以拼湊整個圖的顏色,而不是特定元素的顏色。有任何想法嗎?
我想獲得像在這個例子中,當cls
有三個值的元素:
我有三個相同長度的向量:x
,y
和cls
。我想製作x和y的二維圖,但每個點的顏色應與cls
的值相對應。如何在Matlab中使用取決於值的顏色製作2D散點圖?
我曾考慮過使用scatter
函數,但您可以拼湊整個圖的顏色,而不是特定元素的顏色。有任何想法嗎?
我想獲得像在這個例子中,當cls
有三個值的元素:
從分散的幫助:
散射(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)
不過,我不知道該怎麼做了背景。你是否應用了一些機器學習算法來分類數據?也許你可以從方程中獲得方程來繪製背景,但這取決於方法。
這裏的另一種解決方案使用邏輯索引在三個分割你的數據:
% 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
如果您有統計工具箱,有這樣做的一個簡單的方法,這就是所謂的gscatter
。
它需要類似的輸入scatter
,但第三個輸入是組:
gscatter(x,y,cls)
您可以添加顏色和標誌 - 這個地塊紅色,然後綠色,然後藍(由內容確定的順序cls
,所有標記界
gscatter(x,y,cls,'rgb','o')
一個與c
是顏色矢量很簡單的解決辦法:
scatter3(X,Y,zeros(size(X,1)),4,c);
view(0,90);
如果您經歷了自己分割數據的努力,並且不使用'scatter'的附加功能(例如,每個點不同的顏色/大小),你可以簡單地用'line'對象(_with_''Linestyle','none','Marker','o'')來繪製你的每個組。如果您有大量的點數,性能會有所提高。 – Hoki 2014-11-05 12:51:00
@Hoki謝謝,好點。 – am304 2014-11-05 13:01:39