我有一个二维数组,我想散点图按行分组的点,以便每一行都有不同的符号。到目前为止,这是我的代码,所有点都是相同的符号,所以我不知道哪些点属于哪一行。
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)));
我有一个二维数组,我想散点图按行分组的点,以便每一行都有不同的符号。到目前为止,这是我的代码,所有点都是相同的符号,所以我不知道哪些点属于哪一行。
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)));
您不需要循环,您可以利用以下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+'
分别确定符号的颜色和形状。然后你的情节看起来像这样:
编辑
对于那些无法访问该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
图的输出: