繁体   English   中英

如何在Matlab中标记超过指定值的图中的点?

[英]How to mark points in a plot that are over a specified value in Matlab?

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

谢谢您的帮助!

最简单的方法是分别绘制集合,并为每个集合指定不同的符号,即

plot(x(Y<=90),Y(Y<=90),'bx',x(Y>90),Y(Y>90),'bo');

你也可以做不同的颜色。 scatter函数能够使用语法scatter(x,y,s,c) 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矩阵,您可以索引到当前的colormap。 这允许您获得具有某些值的良好平滑变化:

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的值映射到当前颜色图来确定。 这里的想法是看两种不同的变化模式,但你可以使用cv=y

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM