根据年份和日期数字制作时间表

Make a timeline from year and day numbers

我想做一个时间表。

下面的代码从一些 Excel 工作簿的 A 列和 B 列中提取信息。在 A 列中是年份,B 列包含事件发生时的日期(那一年)。

我的问题是:如何使用 Station1、Station2 等绘制此图。在 Y 轴上,在 X 轴上是年份?我希望图表在我的 Excel sheet 有数据的那一天(和正确的年份)做出一个点。

num = xlsread('station1.xlsx', 1, 'A:B');
num3 = xlsread('station2.xlsx', 1, 'A:B');
num4 = xlsread('station3.xlsx', 1, 'A:B');
num5 = xlsread('station5.xlsx', 1, 'A:B');

示例数据:

num =  2000      193
       2000      199
       2000      220
       2000      228
       2000      241
       2000      244
       2000      250
       2000      257        
       2016      287
       2016      292
       2016      294
       2016      300

使用 datetimecaldays 将您的年份/年份数据转换为实际日期:

dnum = datetime(num(:,1),1,1) + caldays(num(:,2));
% dnum = '12-Jul-2000'
%        '18-Jul-2000'
%        '08-Aug-2000' 
%        ...

在每个日期绘制一条带有标记的线:

hold on % to plot multiple lines
plot(dnum, 1*ones(size(dnum)), 'x-')    % Change the 1 to the y-axis value
plot(dnum2, 2*ones(size(dnum2)), 'x-')  % Line at y=2 with other dates dnum2
hold off

输出(在 x 轴上放大以显示 2000 年的日期):


如果您的文件按照您的示例命名,那么您可以用一个循环替换整个代码,以避免声明大量 num 变量并在多行中调用 plot

figure; hold on;
for ii = 1:5
    num = xlsread(['station', num2str(ii), '.xlsx'], 1, 'A:B');
    dnum = datetime(num(:,1),1,1) + caldays(num(:,2));
    plot(dnum, 1*ones(size(dnum)), 'x-');
end
hold off