【问题标题】:How do I plot this? MATLAB我如何绘制这个? MATLAB
【发布时间】:2013-07-11 19:53:15
【问题描述】:

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

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

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

谢谢!!

【问题讨论】:

  • 不确定你的意思。但我认为您可以简单地使用循环并根据您的规范为每一行选择颜色。如果这是您的意思,请尝试返回。
  • 我不想在 MATAB 中使用 lop。怎么样,有4个参数,矩阵中每个不同的值组合都有不同的形状和颜色。

标签: matlab colors plot shape


【解决方案1】:

基于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
您有四个案例,因此有四个额外的情节线。

【讨论】:

  • 谢谢!让我试试这个!
  • 原来你甚至不需要绘制原图
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多