Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MATLAB中在x轴上随时间着色矩形?_Matlab_Plot - Fatal编程技术网

如何在MATLAB中在x轴上随时间着色矩形?

如何在MATLAB中在x轴上随时间着色矩形?,matlab,plot,Matlab,Plot,我试图在此图上绘制灰色矩形: t1 = datetime(2002,02,01); t2 = datetime(2019,11,01); t = t1:calmonths:t2; t= datenum(char(t),'dd-mm-yyyy') plot(t, randn(214,1), 'LineWidth',1,'Color', [0 0 0]); ax.XTick = t(1:end); datetick('x','yyyy','keepticks'); yline(0,'-') yla

我试图在此图上绘制灰色矩形:

t1 = datetime(2002,02,01);
t2 = datetime(2019,11,01);
t = t1:calmonths:t2;
t= datenum(char(t),'dd-mm-yyyy')

plot(t, randn(214,1), 'LineWidth',1,'Color', [0 0 0]);
ax.XTick = t(1:end);
datetick('x','yyyy','keepticks');
yline(0,'-')
ylabel('%')

我想要两个阴影区域:一个是从2009年4月到2010年10月,另一个是从2003年1月到2015年10月。我以前也这样做过,但随着时间的推移,x轴的问题变得复杂了,至少对我来说是这样

有人能帮我吗?

这是一个尝试

t1 = datetime(2002,02,01);
t2 = datetime(2019,11,01);
t = t1:calmonths:t2;
t= datenum(char(t),'dd-mm-yyyy');

figure;
hold on

% 1st shaded area
d1=datenum(datetime(2003,01,01));
d2=datenum(datetime(2015,10,01));
x=[[d1,d2],[d2,d1],d1];
y=[-[3,3],[3,3],[-3]];
fill(x, y, 'r');

% 2nd shaded area
d1=datenum(datetime(2009,04,01));
d2=datenum(datetime(2010,10,01));
x=[[d1,d2],[d2,d1],d1];
y=[-[3,3],[3,3],[-3]];
fill(x, y, 'g');

% Time-series
plot(t, randn(214,1), 'LineWidth',1,'Color', [0 0 0]);
ax.XTick = t(1:end);
datetick('x','yyyy','keepticks');
yline(0,'-')
ylabel('%')

您可以使用透明度(alpha)使其更加美观。

您可以将向量
t
(由
datenum(…)返回)
视为标准的
x
轴。非常感谢!非常有用!