假设我有一个数据集,其中 x 经度值和 Y 值从 1 到 100。如何绘制整个数据集并用不同的符号表示超过 90 的所有 Y 值?
谢谢您的帮助!
The easiest way would be to plot the sets separately, and specify a different symbol for each set i.e.
plot(x(Y<=90),Y(Y<=90),'bx',x(Y>90),Y(Y>90),'bo');
你也可以做不同的颜色。该scatter
函数能够使用语法为每个点指定不同的颜色scatter(x,y,s,c)
。对于您的示例,您可以执行以下操作:
% make data
rng(0,'twister'); theta = linspace(0,2*pi,150);
x = sin(theta) + 0.75*rand(1,150); x = x*100;
y = cos(theta) + 0.75*rand(1,150); y = y*100;
mask = y>90;
% plot with custom colors for each point
c = zeros(numel(x),3); % matrix of RGB colorspecs
c(mask,:) = repmat([1 0 0],nnz(mask),1); % red
c(~mask,:) = repmat([0 0 1],nnz(~mask),1); % blue
scatter(x,y,10,c,'+');
或者代替 RGB colorspec 矩阵,您可以索引到当前颜色图。这允许您获得具有某些值的良好平滑变化:
scatter(x,y,10,y+x,'o') % x+y is mapped to indexes into default colormap, jet(64)
您可以将此颜色映射与将数据分成两组的方法相结合,以获得不同的标记。拆分数据,用scatter
上面的方法绘制第一组hold on
,然后用不同的标记绘制第二组。例如,
cv = x+y; % or just y, but this is an interesting example
scatter(x(mask),y(mask),10,cv(mask),'+');
hold on
scatter(x(~mask),y(~mask),10,cv(~mask),'o');
结果是不同的标记样式,在'+'
哪里y>90
和'+'
其他地方使用,以及不同的颜色,其中颜色是通过将 的值映射cv=x+y
到当前颜色图来确定的。这里的想法是查看 2 种不同的变化模式,但您可以只使用cv=y
.