在 MATLAB 中,如何用一种颜色填充点曲线上方的区域并用不同颜色填充相同曲线下方的区域?

How do you fill the area above a curve of points with one color and below the same curve with a different color in MATLAB?

在MATLAB中,我有以下几组要点:

T_arr =
        1000
         500
         400
         300
         200
         100

results =

    2.6000    
    2.2000    
    2.1500    
    2.1000    
    2.0000    
    1.8000 

当我绘制它们时,它看起来像这样:

plot(T_arr, results); hold on; 
plot(T_arr, results,'*'); 
xlabel('T'); 
ylabel('result'); 
title('T vs. result')

我想用一种颜色(比如红色)为曲线上方的区域着色,用另一种颜色(比如蓝色)为曲线下方的区域着色。如何在 MATLAB 中完成此操作?

我知道 MATLAB 中有两个名为 fill and area 的函数,但我不清楚如何使用它们来解决这个特定问题。

要使用fill,我们需要提供一组形成闭合形状的点。 我们将使用您的数据集中的点以及图片的左上角 (x0,y0) 和右下角 (x1, y1)。

现在我们需要找到这些坐标并为两组不同颜色的点调用填充(fill 中的最后一个参数)。如果数据已排序或限制已知,您可以避免使用 maxmin。我在线前绘制区域以确保标记可见 - 这也是我没有使用红色和蓝色的原因。

T_arr = [1000, 500, 400,300, 200, 100];
results =[2.6000,    2.2000,   2.1500,    2.1000,    2.0000, 1.8000 ];
plot(T_arr, results); hold on; 
x0 = min(T_arr);
y0 = max(results);
x1 = max(T_arr);
y1 = min(results);
fill([x0, T_arr],[y0, results],'g');
fill([x1, T_arr],[y1, results],'y');
plot(T_arr, results,'*'); 
xlabel('T'); 
ylabel('result'); 
title('T vs. result');

结果如下: