fill color in stairs plot

6 views (last 30 days)
Jayachandra Malavatu
Jayachandra Malavatu on 7 Sep 2023
Edited: Dyuman Joshi on 13 Sep 2023
I have a two data samples
data1=rand(96,1); %random number with 96*1
data2=zeros(96,1)+mean(data1);
I would like to plot ''stairs'' of data1 and date 2 in one figure. data 2 is mean of data 1, now i would like to plot somting like this in stairs for example if data2 is > data1 fill with green color, other wise with yellow color. here red line is data1 and data2 is mean.

Accepted Answer

Dyuman Joshi
Dyuman Joshi on 7 Sep 2023
Edited: Dyuman Joshi on 7 Sep 2023
data1=rand(96,1); %random number with 96*1
avg=mean(data1);
%Get the x and y coordinates corresponding to the stairs plot
[x,y] = stairs(data1);
%Visualizing the stairs plot with the mean value for reference
figure
plot(x,y)
yline(avg,'k')
%Comparing values with mean in order to get two different plots
yb=min(y,avg);
ys=max(y,avg);
figure
hold on
box on
%Plotting filled area 2D plot with mean value as the baseline
area(x,yb,avg,'FaceColor','g')
area(x,ys,avg,'FaceColor','y')
yline(avg,'k')
  6 Comments
Jayachandra Malavatu
Jayachandra Malavatu on 13 Sep 2023
its white , only graph should be there something like shown in figure above
Dyuman Joshi
Dyuman Joshi on 13 Sep 2023
Edited: Dyuman Joshi on 13 Sep 2023
Here's a workaround.
I'll update you if I find a better solution.
%Random values for example
data = [randi([120 210],1,50) randi([200 220],1,15) randi([210 300],1,50)];
[x,y]=stairs(data);
valmin = 160;
valmax = 250;
ymin = min(valmin,y);
ymax = max(valmax,y);
figure
hold on
area(x,ymax,valmax,'FaceColor','b','EdgeColor','w','ShowBaseLine',0)
area(x,ymin,valmin,'FaceColor','y','EdgeColor','w','ShowBaseLine',0)
area(x,valmax*ones(size(x)),valmin,'FaceColor','w','EdgeColor','w')
plot(x,y,'k-')

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!