MATLAB: I am trying to shade two area (Area A and B in the image below) under a curve with two different colours. Please help me out. mat file is attached.

shade under curve

As per my code, whole curve area is becoming green. I am trying to mark Area-A as green & Area-B as red. Code-
clc
a=importdata('robin roy.mat');
b=a.data;
x=b(22000:25830,1);
plot(x);
id = 1:length(x) ;
x(x<0)=[];
findpeaks(x);
findpeaks(x,'MinPeakHeight',1.15);
Area1 = trapz(id(1:447),x(1:447)) ;
Area2 = trapz(id(447:1815),x(447:1815)) ;
hold on
ha1 = area(x(x<=447),'FaceColor','g');
ha2 = area([447 x0], [y(x == 447) 0], 'FaceColor','r');
hold off
A1str = sprintf('Area 1 = %6.3f', Area1);
A2str = sprintf('Area 2 = %6.3f', Area2);
legend([ha1 ha2], A1str, A2str)

Best Answer

a=importdata('robin roy.mat');
b=a.data;
x=b(22000:25830,1);
plot(x);
id = 1:length(x) ;
x(x<0)=[];
findpeaks(x);
findpeaks(x,'MinPeakHeight',1.15);
Area1 = trapz(id(1:447),x(1:447)) ;
Area2 = trapz(id(447:1815),x(447:1815)) ;
hold on
% ha1 = area(x(x<=447),'FaceColor','g');
% ha2 = area([447 x], [y(x == 447) 0], 'FaceColor','r');
ha1 = area(id(1:447),x(1:447),'FaceColor','g') ;
ha2 = area(id(447:1815),x(447:1815),'FaceColor','r') ;
hold off
A1str = sprintf('Area 1 = %6.3f', Area1);
A2str = sprintf('Area 2 = %6.3f', Area2);
legend([ha1 ha2], A1str, A2str)