我如何绘制这个? MATLAB

时间:2013-07-11 19:53:15

标签: matlab colors plot shape

我有一个矩阵X,我想用kmeans函数绘制它。我想要的是:如果第4列中的行值为1,我希望它是方形的如果第4列中的行值为2我想它+形状但是如果行的值为0第5列必须是蓝色,如果第5列中的行的值为1,则必须为黄色

(你不需要使用这些确切的颜色和形状,我只是想区分这些。)我试过这个并且它不起作用:

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

谢谢!

1 个答案:

答案 0 :(得分: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)选择X(:,5) idx==1的值0。从那些开始,只考虑X(X(...)==0,1)的值:bs。{{1}}。根据问题中的逻辑,这应该是一个蓝色方块:{{1}} 你有四种情况,因此还有四种情节线。