高亮部分matlab绘图

Posted

技术标签:

【中文标题】高亮部分matlab绘图【英文标题】:Highlight parts of matlab plot 【发布时间】:2012-11-23 22:04:06 【问题描述】:

我有一个如下所示的 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

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

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

我会为每个子图这样做。显然这是相当复杂的,所以最好有一个衬里。谁能想到一个?

【问题讨论】:

你试过函数'patch()'吗? 谢谢@jerad 我没有,但我现在想通了。 【参考方案1】:

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

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

alpha 在大多数区域图中设置透明度。这与问题中的代码相结合,结果如下:

在 matlab 中绘图非常酷。

【讨论】:

以上是关于高亮部分matlab绘图的主要内容,如果未能解决你的问题,请参考以下文章

[Matlab]去除绘图周围空白边界

一个matlab绘图的小问题

MATLAB应用实战系列(五十四)-MATLAB多维度绘图实战应用案例

MATLAB | MATLAB中绘图的奇淫技巧合集

MATLAB | MATLAB中绘图的奇淫技巧合集

MATLAB绘图与图形处理