0

假设我有一个数据集,其中 x 经度值和 Y 值从 1 到 100。如何绘制整个数据集并用不同的符号表示超过 90 的所有 Y 值?

谢谢您的帮助!

4

2 回答 2

1

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');
于 2013-10-18T21:14:16.217 回答
1

你也可以做不同的颜色。该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.

在此处输入图像描述

于 2013-10-18T21:49:04.660 回答