根据年份和日期数字制作时间表
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
使用 datetime
和 caldays
将您的年份/年份数据转换为实际日期:
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
我想做一个时间表。
下面的代码从一些 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
使用 datetime
和 caldays
将您的年份/年份数据转换为实际日期:
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