Вы можете сделать это, используя функцию FILL , чтобы создать заполненные полигоны под участками ваших графиков.Вы захотите построить линии и полигоны в том порядке, в каком вы хотите, чтобы они были размещены на экране, начиная с самого нижнего.Вот пример с некоторыми примерами данных:
x = 1:100; %# X range
y1 = rand(1,100)+1.5; %# One set of data ranging from 1.5 to 2.5
y2 = rand(1,100)+0.5; %# Another set of data ranging from 0.5 to 1.5
baseLine = 0.2; %# Baseline value for filling under the curves
index = 30:70; %# Indices of points to fill under
plot(x,y1,'b'); %# Plot the first line
hold on; %# Add to the plot
h1 = fill(x(index([1 1:end end])),... %# Plot the first filled polygon
[baseLine y1(index) baseLine],...
'b','EdgeColor','none');
plot(x,y2,'g'); %# Plot the second line
h2 = fill(x(index([1 1:end end])),... %# Plot the second filled polygon
[baseLine y2(index) baseLine],...
'g','EdgeColor','none');
plot(x(index),baseLine.*ones(size(index)),'r'); %# Plot the red line
А вот итоговый показатель:
![enter image description here](https://i.stack.imgur.com/m5X0j.png)
Вы также можете изменить порядок расположения объектов впосле того, как вы построили их, изменив порядок маркеров в свойстве 'Children'
объекта axes.Например, этот код меняет порядок наложения, скрывая зеленый многоугольник за синим многоугольником:
kids = get(gca,'Children'); %# Get the child object handles
set(gca,'Children',flipud(kids)); %# Set them to the reverse order
Наконец, если вы точно не знаете, в каком порядке вы хотите сложить свои многоугольники раньше времени (т.е.любой из них может быть меньшим многоугольником, который вы, вероятно, захотите сверху), тогда вы можете настроить свойство 'FaceAlpha'
, чтобы один или оба многоугольника казались частично прозрачными и показывали другой под ним.Например, следующее сделает зеленый многоугольник частично прозрачным:
set(h2,'FaceAlpha',0.5);