两条垂直线之间的阴影区域

时间:2016-05-25 21:50:47

标签: matlab plot fill area

我有12个时间点的数据y1=[.61 .52 .45 .75 .76 .79 .82 .6 .66 .54 .43 .21];我想将其绘制为线图,并在时间点7和8绘制两条垂直线,并遮蔽这两条线之间的区域。此阴影区域应足够透明以显示该线条。我还希望有一个图例来显示阴影区域=关键时期或在线下方区域内写有“关键时期”。从这answer开始,我尝试过:

y1=[.61 .52 .45 .75 .76 .79 .82 .6 .66 .54 .43 .21];
N=size(y1,2);
sky_blue = [0, 0, 1] ;
x=1:N;           
plot([1:N]', y1, 'linewidth', 2.8, 'linestyle', '-', 'color', sky_blue);
hold on
x1=7;
x2=8;
y2=get(gca,'ylim');    
plot([x1 x1],y2)
plot([x2 x2],y2)    
h1 = fill(x1,x2,'b','EdgeColor','none');

问题是,在最后一行我无法获得两行之间的阴影之前,情况还可以。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

差不多吧!只需将最后一行代码更改为以下内容:

h1 = fill([x1 x1 x2 x2], [y2 fliplr(y2)], 'b','EdgeColor','none');

fill()函数将区域(多边形)的角(顶点)的x和y坐标作为输入,以顺时针或逆时针方式填充颜色(多边形无需关闭) (fill可以为你关闭))。

这里,我们已经传递了从左下顶点开始以顺时针顺序由两条线限定的多边形的四个顶点的x和y坐标的矢量数组。注意:fliplr()函数只是从左到右反转1x2列向量y2