突出显示matlab图的部分内容

Fan*_*Fox 8 matlab plot area fill

我有一个matlab图,看起来像这样:

在此输入图像描述

其中每个子图的Y值存储在单维数组中.我想要做的是找到一个顶部图形高于某个高度的区域,如0.5.我还想在其他图表中突出显示相同的区域.

这是我所说的一个例子:

在此输入图像描述

到目前为止我能找到的最好的功能area是填充matlab网格上的一个区域.但是,如果有人可以告诉我如何使其透明,以及如何填充多个区域而无需执行大量区域命令.

否则,我可以在结构中识别一组区域并使用for循环来绘制它们.这是我将要做的方式的一些伪代码:

countstruct = 1;
for i = 1:length(yValue)
    if (yValue(i) > 1)
        outside = [outside, i]
    else
         areas(countstruct).outside = outside;
         countstruct = countstruct + 1;
         clear outside;

     end
 end
Run Code Online (Sandbox Code Playgroud)

然后绘制我会这样做的区域:

for i = 1:length(areas)
    area(areas(i).outside, ones(length(area), 1)*14, "SomeThingToMakeItTransperant')
end
Run Code Online (Sandbox Code Playgroud)

我会为每个子图做到这一点.显然这很复杂,所以最好有一个班轮.谁能想到一个?

Fan*_*Fox 4

我发现,我提供的伪代码获得了正确的区域。然后你可以这样做:

for i = 1:length(areas)
    harea = area(areas(i).outside, ones(length(areas(i).outside), 1)*14, 'LineStyle', 'none')
    set(harea, 'FaceColor', 'r')
    alpha(0.25)
    hold on
end
Run Code Online (Sandbox Code Playgroud)

alpha设置大多数面积图中的透明度。这与问题中的代码相结合会产生以下结果:

在 matlab 中绘制它非常酷。