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