2012-12-22 88 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