2012-12-22 111 views
4

我在3維中有矩陣點XXNx3矩陣),並且這些點屬於羣集。它所屬的簇由Nx1矢量Cluster(它具有像1,2,3等值)給出。所以,我在scatter3這樣描繪的:創建散點圖(Matlab)的圖例

scatter3(X(:,1),X(:,2),X(:,3),15,Cluster) 

它工作正常,但我想一個傳奇添加到它,顯示顏色的標記,它代表了集羣。

舉例來說,如果我有3個團,我想有一個傳說,如:

<blue o> - Cluster 1 
<red o> - Cluster 2 
<yellow o> - Cluster 3 

非常感謝您的幫助!

+0

你指的是在特定的'RGB'飛機?或者你只是想標記羣集? – bonCodigo

+0

@bonCodigo我只想給他們加上標籤 – DanielX2010

回答

3

而不是使用scatter3的,我建議你使用plot3,這將會使標籤更簡單:

%# find out how many clusters you have 
uClusters = unique(Cluster); 
nClusters = length(uClusters); 

%# create colormap 
%# distinguishable_colormap from the File Exchange 
%# is great for distinguishing groups instead of hsv 
cmap = hsv(nClusters); 

%# plot, set DisplayName so that the legend shows the right label 
figure,hold on 
for iCluster = 1:nClusters 
    clustIdx = Cluster==uClusters(iCluster); 
    plot3(X(clustIdx,1),X(clustIdx,2),X(clustIdx,3),'o','MarkerSize',15,... 
     'DisplayName',sprintf('Cluster %i',uClusters(iCluster))); 
end 

legend('show'); 
+0

非常感謝你!有效! – DanielX2010

1

無論您使用

  • legend

代碼:

h = scatter3(X(:,1),X(:,2),X(:,3),15,Cluster) 
hstruct = get(h); 
legend(hstruct.Children, "Cluster1", "Cluster2", "Cluter3"); 

+0

是的,當然,但是我應該用什麼作爲傳說的參數呢?我把第一個參數放在圖例中很好('legend('cluster1')')。它顯示第一個標記正確的圖例,但只顯示第一個標記。它不適用於所有人。 – DanielX2010

+0

@ DanielX2010請嘗試下面的更新,並讓我們知道它是怎麼回事。 – bonCodigo

+0

我也試過了,但結果很奇怪。他發出警告說:「警告:忽略多餘的圖例條目。」並且結果是一個奇怪的圖例(上傳結果在這裏:http://s1.postimage.org/l9k7xm9xb/untitled.png) – DanielX2010