我有一个矩阵X,我想用kmeans函数绘制它。我想要的:如果行在第4列中的值为1,我希望它是方形的如果行在第4列中的值为2,我希望它+形状,但如果该行的值为0第5列它必须是蓝色的,如果第5列中的行的值为1,它必须是黄色的我该如何绘制? MATLAB
(你不需要使用这些确切的颜色和形状,我只是想区分这些)这并没有工作:
plot(X(idx==2,1),X(idx==2,2),X(:,4)==1,'k.');
谢谢!!
我有一个矩阵X,我想用kmeans函数绘制它。我想要的:如果行在第4列中的值为1,我希望它是方形的如果行在第4列中的值为2,我希望它+形状,但如果该行的值为0第5列它必须是蓝色的,如果第5列中的行的值为1,它必须是黄色的我该如何绘制? MATLAB
(你不需要使用这些确切的颜色和形状,我只是想区分这些)这并没有工作:
plot(X(idx==2,1),X(idx==2,2),X(:,4)==1,'k.');
谢谢!!
基于关于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==1
的X(:,5)
这些值。从这些中,只考虑0
的值:X(X(...)==0,1)
。根据问题的逻辑,这应该是一个蓝色方块:bs
。
你有四种情况,因此有四个额外的情节线。
不确定明白你的意思。但我认为你可以简单地使用一个循环,并根据你的规格为每一行选择颜色。如果这是你的意思,那就试着回来。 – innoSPG
我不想在MATAB中使用垂褶。怎么样,有4个参数,矩阵中每个不同值的组合都有不同的形状和颜色。 – user2574059