在MATLAB中,我想指定基于数组的散布标记的类型。
在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
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的四种不同组合吗@瑞伦