在MATLAB中,两条线之间区域的着色无法正常工作

在MATLAB中,两条线之间区域的着色无法正常工作,matlab,matlab-figure,fill,Matlab,Matlab Figure,Fill,我试图沿着一条线绘制阴影不确定性(上界和下界)。我尝试使用fill功能,但它包含的区域比我想要的大。我有一个上限错误(黑色)、下限错误(绿色)和实际数据行(红色),如下所示: 如何获得绿线和黑线之间的面积?我尝试了以下方法: fill([date fliplr(date)], [data_Upper fliplr(data_Lower)], 'r'); 但fill函数覆盖两个直线区域,一直到绘图底部: 如何修复此问题,使其仅对误差线下限和上限之间的区域进行着色?在我看来,您使用了错误的下限

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

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

fill([date fliplr(date)], [data_Upper fliplr(data_Lower)], 'r');
但fill函数覆盖两个直线区域,一直到绘图底部:


如何修复此问题,使其仅对误差线下限和上限之间的区域进行着色?

在我看来,您使用了错误的下限数据

这是一个简单的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');
运行此功能的结果是


祝你好运

我认为问题在于,您的数据是按列向量(即N-by-1)排列的,而不是按行向量(即1-by-N)排列的。上面的代码采用行向量。尝试使用,而不是:


更详细地说,当您将N×M矩阵传递给大多数打印例程时,例如,它将为每列打印一个对象。在这种情况下,我相信您正在创建N×2矩阵,并将它们传递给
填充
,此时您应该为单个填充对象传递1×2*N或2*N×1向量。

使用以下数据:
日期=1:5
数据\u上限=日期
data\u Lower=date-1,一切似乎都正常。你能帮忙吗?
fill([date; flipud(date)], [data_Upper; flipud(data_Lower)], 'r');