0

我有一个二维数组,我想散点图按行分组的点,以便每一行都有不同的符号。到目前为止,这是我的代码,所有点都是相同的符号,所以我不知道哪些点属于哪一行。

a = zeros (31,3);
for k = 0:30
    y = 5*k
    dent = [1 10 10 y]
    a(k+1, [1 2 3]) = roots(dent)
end

t = 1:3


gscatter(real(a(:,t)),imag(a(:,t)));
4

1 回答 1

1

您不需要循环,您可以利用以下gscatter选项:

a = zeros (31,3);
for k = 0:30
    y = 5*k;
    dent = [1 10 10 y];
    a(k+1, [1 2 3]) = roots(dent);
end

group = ones(size(a));
group(:,1) = group(:,1).*0;
group(:,3) = group(:,3).*2;

gscatter(real(a(:)),imag(a(:)),group(:),'brg','xo+');

您需要一个额外的向量 ,group其中包含有关数据集中哪些点属于特定组的信息。这个变量非常通用,请参阅它的文档
在您的情况下,我建议0在第一列、1第二列和2第三列中设置一个矩阵。
在函数调用中,使用( 因为仅适用于向量。 其他两个字符串传递给 : 将gscatter所有矩阵重塑为向量: (:)gscatter
gscatter

  • 'brg'
  • 'xo+'

分别确定符号的颜色和形状。然后你的情节看起来像这样:

g散射

编辑

对于那些无法访问该gscatter功能的用户,可以使用以下方法完成scatter

s = 40;
hold on
COLORS='brg';
SYMBOLS='xo+';
for t=1:size(a,2)
    scatter(real(a(:,t)),imag(a(:,t)),s,SYMBOLS(t),'MarkerEdgeColor',COLORS(t))
end
hold off

需要注意的几点:

  • 要以这种方式使用,scatter需要一个符号大小,s = 40在本例中设置为。
  • 符号存储在一个string变量中,以便可以在循环中调用。
  • 边缘颜色也是如此(也可以指定面颜色,查看scatter文档
  • 在循环中调用时,用于hold绘制同一个图形(粗略地说)

这是标准scatter图的输出:

分散

于 2013-07-10T19:57:02.247 回答