Shading area under the curve

Hello,
I am struggling with shading area under the curve at the selected area. I wanted to fill the area over Body Weight line. I have attached my code and the screenshot of the plot.
x = 0:2500;
Lvy = (611 <= x)&(vgrf2 >= bw) & (x < 794);
figure(1)
plot(x,vgrf2,'k')
hold on;
xline(lcom,'k--','Lowest COM position','LabelHorizontalAlignment','center',...
'LabelOrientation','horizontal');
yline(bw,'k--',{'Body','Weight'},'LabelHorizontalAlignment','left',...
'LabelVerticalAlignment','middle');
patch([x(Lvy) fliplr(x(Lvy))], [ones(size(x(Lvy))) fliplr(vgrf2(Lvy))], 'g')
hold off;

2 Comments

Can you attach your data for testing?
I have attached the sample.mat file on the original post. Also, BW is 762.6170, and lcom is 611.

Sign in to comment.

 Accepted Answer

Mehmed Saad
Mehmed Saad on 16 May 2020
Edited: Mehmed Saad on 16 May 2020
Use area for that purpose by selecting the specific range and use area
x = 0:2500;bw =700;lcom = 611;
Lvy = (611 <= x)&(vgrf2 >= bw) & (x < 794);
figure(1)
plot(x,vgrf2,'k')
hold on;
xline(lcom,'k--','Lowest COM position','LabelHorizontalAlignment','center',...
'LabelOrientation','horizontal');
yline(bw,'k--',{'Body','Weight'},'LabelHorizontalAlignment','left',...
'LabelVerticalAlignment','middle');
selected_area = lcom:793;
area(selected_area,vgrf2(selected_area),bw,'EdgeColor','none','FaceColor','g')
Also to select all the area ahead of this point which is greater than bw in y and lcom in x
load('sample.mat')
x = 0:2500;bw =700;lcom = 611;
figure(1)
plot(x,vgrf2,'k')
hold on;
xline(lcom,'k--','Lowest COM position','LabelHorizontalAlignment','center',...
'LabelOrientation','horizontal');
yline(bw,'k--',{'Body','Weight'},'LabelHorizontalAlignment','left',...
'LabelVerticalAlignment','middle');
ind = (vgrf2>bw)&x>lcom;
vgrf2(~ind) = NaN;
area(x,vgrf2,bw,'EdgeColor','none','FaceColor','g')

6 Comments

Thank you for your reply. But I am looking for a way to fill the color at the selected area exceeding a certain y-value (i.e., BW).
Mehmed Saad
Mehmed Saad on 16 May 2020
Edited: Mehmed Saad on 16 May 2020
o sorry i didn't read that. see the updated answer
Thank you so much!
Is there any way to remove the solid line of the yline? I think the line created by the area function.
set the ShowBaseLine property of area to off
area(x,vgrf2,bw,'EdgeColor','none','FaceColor','g','ShowBaseLine','off')
Thank you. it works very well!

Sign in to comment.

More Answers (0)

Categories

Find more on Creating, Deleting, and Querying Graphics Objects in Help Center and File Exchange

Asked:

on 16 May 2020

Commented:

on 16 May 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!