2013-07-11 111 views
0

我有一個矩陣X,我想用kmeans函數繪製它。我想要的:如果行在第4列中的值爲1,我希望它是方形的如果行在第4列中的值爲2,我希望它+形狀,但如果該行的值爲0第5列它必須是藍色的,如果第5列中的行的值爲1,它必須是黃色的我該如何繪製? MATLAB

(你不需要使用這些確切的顏色和形狀,我只是想區分這些)這並沒有工作:

plot(X(idx==2,1),X(idx==2,2),X(:,4)==1,'k.'); 

謝謝!!

+0

不確定明白你的意思。但我認爲你可以簡單地使用一個循環,並根據你的規格爲每一行選擇顏色。如果這是你的意思,那就試着回來。 – innoSPG

+0

我不想在MATAB中使用垂褶。怎麼樣,有4個參數,矩陣中每個不同值的組合都有不同的形狀和顏色。 – user2574059

回答

0

基於關於kmeans documentation page我提出這個「嵌套」邏輯例如:

X = [randn(100,2)+ones(100,2);... 
    randn(100,2)-ones(100,2)]; 
opts = statset('Display','final'); 

% This gives a random distribution of 0s and 1s in column 5: 
X(:,5) = round(rand(size(X,1),1)); 

[idx,ctrs] = kmeans(X,2,... 
        'Distance','city',... 
        'Replicates',5,... 
        'Options',opts); 

hold on 
plot(X(idx==1,1),X(idx==1,2),'rs','MarkerSize',12) 
plot(X(idx==2,1),X(idx==2,2),'r+','MarkerSize',12) 

% after plotting the results of kmeans, 
% plot new symbols with a different logic on top: 

plot(X(X(idx==1,5)==0,1),X(X(idx==1,5)==0,2),'bs','MarkerSize',12) 
plot(X(X(idx==1,5)==1,1),X(X(idx==1,5)==1,2),'gs','MarkerSize',12) 
plot(X(X(idx==2,5)==0,1),X(X(idx==2,5)==0,2),'b+','MarkerSize',12) 
plot(X(X(idx==2,5)==1,1),X(X(idx==2,5)==1,2),'g+','MarkerSize',12) 

上面的代碼是一個最小工作例如,給定的統計工具箱是可用的。
關鍵功能是繪圖的嵌套邏輯。例如:

X(X(idx==1,5)==0,1) 

X(idx==1,5)選擇用於其中idx==1X(:,5)這些值。從這些中,只考慮0的值:X(X(...)==0,1)。根據問題的邏輯,這應該是一個藍色方塊:bs
你有四種情況,因此有四個額外的情節線。

+0

謝謝!讓我試試這個! – user2574059

+0

我做了一些調整,但它的工作原理!感謝 – user2574059

+0

事實證明,你甚至不需要繪製原圖 – user2574059