How can I shade the background of a timeseries plot based on another value.

19 次查看(过去 30 天)
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.

采纳的回答

jonas
jonas 2020-7-17
编辑:jonas 2020-7-17
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 个评论
jonas
jonas 2020-7-17
编辑:jonas 2020-7-17
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])

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Line Plots 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by