我有一个二维数组,我想分散绘制按行分组的点,这样每行都有一个不同的符号。这是我的代码到目前为止,所有的点都是相同的符号,所以我不知道哪些点是哪一行的一部分。
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)));
答案 0 :(得分: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
,其中包含有关数据集中哪些点属于特定组的信息。此变量非常通用,请参阅it's documentation
在您的情况下,我建议在第一列中设置0
的矩阵,在第二列中设置1
,在第三列中设置2
。
在gscatter
函数调用中,使用(:)
将所有矩阵重塑为向量(因为gscatter
仅适用于向量。
其他两个字符串传递给gscatter
:
'brg'
'xo+'
分别确定符号的颜色和形状。你的情节看起来像这样:
编辑
对于那些无法访问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
documentation hold
绘制到相同的图中(粗略地说)这是标准scatter
图的输出: