我正在尝试使用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')
答案 0 :(得分:1)
我想我找到了问题
阅读datenum的文档:
datenum函数创建一个数字数组,该数组将每个时间点表示为从0000年1月0日开始的天数。
Dat
的值非常大。
我假设您希望XTick
标签采用日期格式,而不是自BC以来的秒数。
使用datestr将Dat
转换为所需格式,然后将其转换为单元格数组。
(在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);