MATLAB, Filling in the area between two sets of data, lines in one figure
我对使用
我从一个大文本文件创建了这个图:
绿色和蓝色代表两个不同的文件。 我要做的是分别填写红线和每次运行之间的区域。 我可以用类似的想法创建面积图,但是当我将它们绘制在同一图形上时,它们不会正确重叠。 本质上,一个图形上将包含4个地块。
我希望这是有道理的。
基于@gnovice的答案,您实际上可以仅在两条曲线之间的区域中创建带有阴影的填充图。只需将
例:
1 2 3 4 5 6 |
通过翻转x数组并将其与原始数组连接,您可以上下,向上,然后向上,向上关闭,以在一个完整的,多面多面的多边形中封闭两个数组。
就个人而言,我觉得包装填充功能既优雅又方便。
要在两个相等大小的行向量
您可以使用功能FILL在绘图的各个部分下创建填充的多边形来完成此操作。您将要按照希望它们在屏幕上堆叠的顺序绘制线条和多边形,从最底部的线条和多边形开始。这是一些示例数据的示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | x = 1:100; %# X range y1 = rand(1,100)+1.5; %# One set of data ranging from 1.5 to 2.5 y2 = rand(1,100)+0.5; %# Another set of data ranging from 0.5 to 1.5 baseLine = 0.2; %# Baseline value for filling under the curves index = 30:70; %# Indices of points to fill under plot(x,y1,'b'); %# Plot the first line hold on; %# Add to the plot h1 = fill(x(index([1 1:end end])),... %# Plot the first filled polygon [baseLine y1(index) baseLine],... 'b','EdgeColor','none'); plot(x,y2,'g'); %# Plot the second line h2 = fill(x(index([1 1:end end])),... %# Plot the second filled polygon [baseLine y2(index) baseLine],... 'g','EdgeColor','none'); plot(x(index),baseLine.*ones(size(index)),'r'); %# Plot the red line |
这是结果图:
在绘制对象之后,还可以通过修改axes对象的
1 2 |
最后,如果您不知道要提前堆叠多边形的确切顺序(即,一个可能是较小的多边形,您可能希望在顶部放置它),则可以调整
1 |
您要查看patch()函数,并潜入水平线起点和终点的点:
1 2 3 4 5 6 |
如果只希望部分数据填充区域,则需要截断x和y向量,以仅包括所需的点。