我有一个看起来像这样的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
我会为每个子图做到这一点。显然这很复杂,所以最好有一个班轮。谁能想到一个?
答案 0 :(得分: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
alpha
设置大多数区域图的透明度。这与问题中的代码结合在一起产生:
在matlab中绘图非常酷。