在MATLAB中两条线之间的区域阴影不能正常工作

问题描述 投票:3回答:2

我试图沿着一条线绘制阴影不确定性(上限和下限)。我尝试使用fill函数,但它包含的区域比我想要的大。我有一个上部错误(黑色),下部错误(绿色)和实际数据行(红色),如下所示:

enter image description here

如何获得绿线和黑线之间的区域?我尝试了以下方法:

fill([date fliplr(date)], [data_Upper fliplr(data_Lower)], 'r');

但填充功能涵盖了两个线区域一直到底部的情节:

enter image description here

如何解决这个问题只能遮蔽下错误线界限和上错误界限之间的区域?

matlab matlab-figure fill
2个回答
1
投票

在我看来,你使用了错误的下界数据。

这是一个简单的MATLAB示例,您可以修改它以包含您的行,

x =[1 2 3 4 5];%Both lines share same x value
y1=x+1;%Equation for first line
y2=2*x;%Equation for second line
% plot the line edges
hold on 
plot(x, y1, 'LineWidth', 1);
plot(x, y2, 'LineWidth', 1);
% plot the shaded area
fill([x fliplr(x)], [y2 fliplr(y1)], 'r');

运行这个的结果是

enter image description here

祝好运!


0
投票

我认为问题在于你的数据是以列向量(即N-by-1)而不是行向量(即1-by-N)排列的。上面的代码假定行向量。尝试使用flipudvertical concatenation代替:

fill([date; flipud(date)], [data_Upper; flipud(data_Lower)], 'r');

详细说来,当你将N-by-M矩阵传递给大多数绘图程序(如fill)时,它将为每列绘制一个对象。在这种情况下,我相信你正在创建N-by-2矩阵并将它们传递给fill,当你应该为单个填充对象传递1×2 * N或2 * N-by-1向量时。

© www.soinside.com 2019 - 2024. All rights reserved.