我想在一些数据后面绘制一个背景矩形。 Rectangle
不支持x坐标或宽度的时间。还有其他方法吗?
简单案例:
time_data = datetime(2017,7,23) + duration(6,0:10:(60*14),0);
data = sort(rand(size(time_data)));
time_rectangle = datetime(2017,7,23) + duration([9 5+12],0,0);
figure(1)
plot(time_data,data)
hold on
plot([time_rectangle(1) time_rectangle(1)],ylim(),'--k','linewidth',1)
plot([time_rectangle(2) time_rectangle(2)],ylim(),'--k','linewidth',1)
ylimits = ylim();
rectangle(time_rectangle(1),ylimits(1),diff(time_rectangle),diff(ylimits))
(如果矩形工作,矩形将位于数据前面,但这很容易修复)
答案 0 :(得分:1)
您可以使用不同的轴。而不是上面的最后一行,输入以下内容:
xlimits = xlim(); % get the time limits
num_rectangle = datenum(time_rectangle); % convert the rectangle unites to numeric
axes; % add another axes
% add the rectangle only with numeric units:
rectangle('Position',... % draw a semi-transparent green rectangle
[num_rectangle(1) ylimits(1) diff(num_rectangle) diff(ylimits)],...
'FaceColor',[0.5 1 0.5 0.5],'EdgeColor','none')
xlim(datenum(xlimits)) % set the new axes limits to be the same as the the original axes
axis off % turn off the new axes, to see the only the rectangle
答案 1 :(得分:1)
在 R2020b 和可能更早的版本中,“fill”命令可用于绘制任意形状,包括矩形,其中 x 轴由日期组成。 This post 包含您需要的信息。