如何在 MATLAB 中绘制填充矩形作为所需目标的背景?
How can I plot filled rectangles as a backdrop for a desired target in MATLAB?
我有两个数据集,一个是目标位置,一个是实际位置。我想用 +/- 可接受的范围绘制目标,然后用实际覆盖。不过这个问题只针对目标位置。
我尝试使用内置区域、填充和矩形功能均未成功。使用在 Whosebug here 上找到的代码,它仅在某些区域是正确的。
例如
y = [1 1 1 2 1 1 3 3 1 1 1 1 1 1 1]; % Target datum
y1 = y+1; %variation in target size
y2 = y-1;
t = 1:15;
X=[t,fliplr(t)]; %create continuous x value array for plotting
Y=[y1,fliplr(y2)]; %create y values for out and then back
fill(X,Y,'b');
生成的图形如下所示:
我希望将其填入此处绘制的红框内:
谢谢!
如果您只是针对 x
绘制函数 y
,那么您可以使用 stairs
图。对我们来说幸运的是,您可以使用 stairs function
,例如:
[xs,ys] = stairs(x,y);
创建向量 xs
,ys
在使用 plot
函数时生成阶梯图。我们现在可以使用这些向量为 fill
函数生成正确的 X
和 Y
向量。注意stairs
生成列向量,所以我们要先转置它们:
y = [1 1 1 2 1 1 3 3 1 1 1 1 1 1 1]; % Target datum
y1 = y+1; %variation in target size
y2 = y-1;
t = 1:15;
[ts,ys1] = stairs(t,y1);
[ts,ys2] = stairs(t,y2);
X=[ts.',fliplr(ts.')]; %create continuous x value array for plotting
Y=[ys1.',fliplr(ys2.')]; %create y values for out and then back
fill(X,Y,'b');
再次感谢 hbaderts。你完美地回答了我的问题,但是当我把它应用到我需要的大数据集时,我得到了这张图片
https://dl.dropboxusercontent.com/u/37982601/stair%20fill.png
我觉得是因为填充函数连接顶点来填充?
无论如何,对于另一个人的潜在解决方案,将您建议的代码与 stair 功能结合使用,并使用 area 功能。
通过将它们绘制在彼此之上并将下部区域的颜色设置为白色,它显示为我想要的矩形图形。
%sample code. produces image similar to o.p.
y = [1 1 1 2 1 1 3 3 1 1 1 1 1 1 1];
y1 = y+1;
y2 = y-1;
t = 1:15;
[ts,ys1] = stairs(t,y1);
[ts,ys2] = stairs(t,y2);
area(ts,ys1,'FaceColor','b','EdgeColor','none')
hold on
area(ts,ys2,'FaceColor','w','EdgeColor','none')
https://dl.dropboxusercontent.com/u/37982601/stair%20area.png
再次感谢您的帮助并为我指明了正确的方向!
我有两个数据集,一个是目标位置,一个是实际位置。我想用 +/- 可接受的范围绘制目标,然后用实际覆盖。不过这个问题只针对目标位置。
我尝试使用内置区域、填充和矩形功能均未成功。使用在 Whosebug here 上找到的代码,它仅在某些区域是正确的。
例如
y = [1 1 1 2 1 1 3 3 1 1 1 1 1 1 1]; % Target datum
y1 = y+1; %variation in target size
y2 = y-1;
t = 1:15;
X=[t,fliplr(t)]; %create continuous x value array for plotting
Y=[y1,fliplr(y2)]; %create y values for out and then back
fill(X,Y,'b');
生成的图形如下所示:
我希望将其填入此处绘制的红框内:
谢谢!
如果您只是针对 x
绘制函数 y
,那么您可以使用 stairs
图。对我们来说幸运的是,您可以使用 stairs function
,例如:
[xs,ys] = stairs(x,y);
创建向量 xs
,ys
在使用 plot
函数时生成阶梯图。我们现在可以使用这些向量为 fill
函数生成正确的 X
和 Y
向量。注意stairs
生成列向量,所以我们要先转置它们:
y = [1 1 1 2 1 1 3 3 1 1 1 1 1 1 1]; % Target datum
y1 = y+1; %variation in target size
y2 = y-1;
t = 1:15;
[ts,ys1] = stairs(t,y1);
[ts,ys2] = stairs(t,y2);
X=[ts.',fliplr(ts.')]; %create continuous x value array for plotting
Y=[ys1.',fliplr(ys2.')]; %create y values for out and then back
fill(X,Y,'b');
再次感谢 hbaderts。你完美地回答了我的问题,但是当我把它应用到我需要的大数据集时,我得到了这张图片
https://dl.dropboxusercontent.com/u/37982601/stair%20fill.png
我觉得是因为填充函数连接顶点来填充?
无论如何,对于另一个人的潜在解决方案,将您建议的代码与 stair 功能结合使用,并使用 area 功能。
通过将它们绘制在彼此之上并将下部区域的颜色设置为白色,它显示为我想要的矩形图形。
%sample code. produces image similar to o.p.
y = [1 1 1 2 1 1 3 3 1 1 1 1 1 1 1];
y1 = y+1;
y2 = y-1;
t = 1:15;
[ts,ys1] = stairs(t,y1);
[ts,ys2] = stairs(t,y2);
area(ts,ys1,'FaceColor','b','EdgeColor','none')
hold on
area(ts,ys2,'FaceColor','w','EdgeColor','none')
https://dl.dropboxusercontent.com/u/37982601/stair%20area.png
再次感谢您的帮助并为我指明了正确的方向!