在MATLAB中,我想指定基于数组的散布标记的类型。

在MATLAB中,我想指定基于数组的散布标记的类型。,matlab,Matlab,在MATLAB中,我想指定基于数组的散布标记的类型 例如: x = [1 5 3 7 2]; % x data y = [6 3 7 4 1]; % y data c = [1 1 2 1 2]; % colors s = [2 1 2 2 1]; % shapes scatter(x,y,30,s,c) ssq = ( s == 2 ) xsq = x( ssq ); ysq = y( ssq ); csq = c( ssq ); scatter( xsq

在MATLAB中,我想指定基于数组的散布标记的类型

例如:

x = [1 5 3 7 2];     % x data
y = [6 3 7 4 1];     % y data

c = [1 1 2 1 2];     % colors
s = [2 1 2 2 1];     % shapes

scatter(x,y,30,s,c)
ssq = ( s == 2 )
xsq = x( ssq );
ysq = y( ssq );
csq = c( ssq );
scatter( xsq, ysq, 30, csq, 's');
hold on;
scirc = ( s == 1 )
xcirc = x( scirc );
ycirc = y( scirc );
ccirc = c( scirc );
scatter( xcirc, ycirc, 30, ccirc, 'o');
hold off;
但这是太多的争论了。它只适用于
c
(颜色),但如何像这样指定标记类型(和颜色)


谢谢大家!

您可以做的一件事是按标记类型分离数据,然后调用scatter两次:每种标记类型调用一次。 例如:

x = [1 5 3 7 2];     % x data
y = [6 3 7 4 1];     % y data

c = [1 1 2 1 2];     % colors
s = [2 1 2 2 1];     % shapes

scatter(x,y,30,s,c)
ssq = ( s == 2 )
xsq = x( ssq );
ysq = y( ssq );
csq = c( ssq );
scatter( xsq, ysq, 30, csq, 's');
hold on;
scirc = ( s == 1 )
xcirc = x( scirc );
ycirc = y( scirc );
ccirc = c( scirc );
scatter( xcirc, ycirc, 30, ccirc, 'o');
hold off;

这是我能想到的最优雅的解决方案。如果MATLAB允许您像指定颜色那样指定标记类型的向量,那就太好了。

不需要使用
find
。只需放置
xsq=x(s==2)等等,它们会工作得更快。@Yvon-我同意。此外,为了节省时间,只需计算一次所需的索引:
s1=s==1;s2=s=2;xsq=x(s1);ysq=y(s1);csq=c(s1),等等。谢谢大家!你知道如何添加一个图例来显示c和s的四种不同组合吗@瑞伦