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

Matlab 如何将x轴设置为应用mutliplotyyy的日期?,matlab,datetime,Matlab,Datetime,我正在尝试将三个具有不同时间分辨率的时间序列绘制成一个图形。不幸的是,我无法将x轴设置为datetick。你知道怎么解决吗?谢谢 所采用的方法基于双轴一点图,效果很好 %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

我正在尝试将三个具有不同时间分辨率的时间序列绘制成一个图形。不幸的是,我无法将x轴设置为datetick。你知道怎么解决吗?谢谢

所采用的方法基于双轴一点图,效果很好

%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')

我想我发现了问题所在

阅读以下文件:

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

Dat
的值非常大

我假设您希望
XTick
标签采用日期格式,而不是BC之后的秒数

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

在设置
XTick
后设置
XTickLabel

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

感谢您的快速回复!根据你的建议,我现在确实有时间在x轴上。然而,我并没有像我最初设定的那样每两个小时打一个勾,所以Dat=xstart1:1/12:xend1;不能正常工作了。为什么会这样?我不知道。根据文档,它不应该工作。你确定你没有每两个小时打勾一次吗?尝试同时设置
set(ax(1),'XTick',Dat)
集合(ax(1),'XTickLabel',DateStr)。您也可以尝试:
set(ax(1),'TickLength',[0.02,0.025])使刻度变长。和
set(ax(1),'LineWidth',2)使其更厚。
set(ax(1), 'XTick', Dat);
set(ax(1), 'XTickLabel', DateStr);