如何应用mutliplotyyy将x轴设置为日期?

时间:2019-06-26 08:25:36

标签: matlab datetime

我正在尝试使用multiplotyyy将具有不同时间分辨率的三个时间序列绘制到一张图中。不幸的是,我无法将x轴设置为datetick。知道如何解决吗?谢谢!

所应用的方法基于datetime matlab different temporal resolution,用于具有两个轴的一个图,效果很好。

%time 5min interval for dataset1
xstart1 = datenum('01/04 10:00', 'dd/mm HH:MM');
xend1 = datenum('02/04 14:00', 'dd/mm HH:MM');
Dat1 = xstart1:1/24/12:xend1;


%time 10min interval for dataset2 and dataset3
xstart2 = datenum('01/04 13:00', 'dd/mm HH:MM'); 
xend2 = datenum('02/04 14:00', 'dd/mm HH:MM');
Dat2 = xstart2:1/24/6:xend2;

%time axis (different temporal resolution)
Dat = xstart1:1/12:xend1;

%data
dataset1 = rand(1,337).';
dataset2 = rand(1,151).';
dataset3 = rand(1,151).';

%plot
ylabels{1}='dataset1';
ylabels{2}='dataset2';
ylabels{3}='dataset3';
[ax,hlines]=multiplotyyy({Dat2, dataset2}, {Dat2, dataset3}, {Dat1, dataset1}, ylabels);
set(ax(1), 'XTick', Dat);
datetick('x', 'dd/mm HH:MM', 'keepticks', 'keeplimits');
legend(cat(1,hlines{:}),'dataset1','dataset2','dataset3','location','w')

1 个答案:

答案 0 :(得分:1)

我想我找到了问题

阅读datenum的文档:

  

datenum函数创建一个数字数组,该数组将每个时间点表示为从0000年1月0日开始的天数。

Dat的值非常大。

我假设您希望XTick标签采用日期格式,而不是自BC以来的秒数。

使用datestrDat转换为所需格式,然后将其转换为单元格数组。
(在Dat = xstart1:1/12:xend1;行之后)
使用以下格式('hh/mm'只是示例格式):

DateStr = cellstr(datestr(Dat, 'hh/mm'));

在设置XTickLabel之后设置XTick

set(ax(1), 'XTick', Dat);
set(ax(1), 'XTickLabel', DateStr);

结果:
Tick