How can I shade the background of a timeseries plot based on another value.
19 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have the following code:
days = [152:272]; %n = 120
PA = [0 0 0 0 1 1 1 1....1 0]; % 1 or 0 for each of the 120 day time series
I would like to shade the back of the plot blue when PA = 1 and yellow when PA = 0
I am going to plot another line in front of the color patches.
0 commentaires
Réponse acceptée
jonas
le 17 Juil 2020
Modifié(e) : jonas
le 17 Juil 2020
You could do something like this,
%some data
days = 100:199;
PA = repmat([0 0 0 0 1 1 1 1 1 1],1,10);
%PA = 1 -> blue background
[x,y] = stairs(days,PA);
area(x,y,'edgecolor','none','facecolor','b')
%otherwise yellow background
set(gca,'color','y')
6 commentaires
jonas
le 17 Juil 2020
Modifié(e) : jonas
le 17 Juil 2020
This should do it. You just need to experiment with the basevalue-property of the stairs-objects and the y-values derived from PA.
%some data
days = 100:199;
PA = repmat([0 0 0 0 1 1 1 1 1 1],1,10);
%get cornerpoints for blue areas
[x,y] = stairs(days,PA);
%let blue background go from -2000 to 2000
y = y.*4e3 - 2e3;
a = area(x,y,'edgecolor','none','facecolor','b')
%adjust basevalue
a.BaseValue = min(y);
%set axes background to yellow
set(gca,'color','y')
hold on
%plot some data
plot([100,200],[-2,2000],'k')
%change axis to your desired limits
axis([min(days),max(days),-2,2000])
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Line Plots dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!