timetable型​のデータで年を除く、​月日のみの傾向を可視​化する方法

2 次查看(过去 30 天)
s
s 2023-3-31
timetable型のデータで時系列に年月日のdatetime型のデータとあるデータがあるとします。
dt1_2016 = datetime("2016-04-24"); data1 =2;
dt2_2016 = datetime("2016-05-24"); data2 =6;
dt1_2017 = datetime("2017-04-24"); data3 =1;
dt2_2017 = datetime("2017-05-24"); data4 =12;
dtData = [dt1_2016 dt2_2016 dt1_2017 dt2_2017]';
Data = [data1 data2 data3 data4]';
ttData = table2timetable(table(dtData,Data))
ttData = 4×1 timetable
dtData Data ___________ ____ 24-Apr-2016 2 24-May-2016 6 24-Apr-2017 1 24-May-2017 12
このデータの月日(年は除く)の傾向を可視化したいです。しかし、datetime型は年までセットで
持ってるため、以下のようにplotすると横軸は同じ「4月24日」と「5月24日」でも2016年と2017年のデータを
別物として認識し、plotします。
plot(ttData.dtData,ttData.Data)
本来であれば、これで良いのですが、年は関係なく、横軸に4月から3月までをとり、
月日のみの傾向がみたい場合は、どうすればいいでしょうか。
(つまり、2016年の「4月24日」と2017年の「4月24日」を同じx軸のデータとしてplotしたいです。)
何か良い方法ありますでしょうか。教えていただければ幸いです。

采纳的回答

Atsushi Ueno
Atsushi Ueno 2023-4-1
カレンダー期間配列(calendarDuration)を使えば良さそうですが、うるう年を無視する必要がありそうです。
単純に年月日を数値データにばらし、年だけを適当な値に変更した datetime 型を再度作成して使うのはどうでしょう。
N = 10;
dtData = [datetime(randi(2023,N,1),4,24,0,0,0); ...
datetime(randi(2023,N,1),5,24,0,0,0)];
Data = randi(12,N*2,1);
ttData = timetable(dtData,Data)
ttData = 20×1 timetable
dtData Data ___________ ____ 24-Apr-0983 6 24-Apr-0797 4 24-Apr-0261 6 24-Apr-0922 2 24-Apr-0374 1 24-Apr-0243 8 24-Apr-0085 2 24-Apr-1105 5 24-Apr-1700 6 24-Apr-0988 5 24-May-0262 2 24-May-0644 4 24-May-0778 11 24-May-0706 12 24-May-0327 3 24-May-1927 7
dtvec = datevec(ttData.dtData); % 日付と時刻を成分のベクトルに変換
dtvec(:,1) = 2000; % 年のみ適当な値に統一する
ttData.dtData = datetime(dtvec); % 再度 datetime 型に変換
scatter(ttData.dtData,ttData.Data);
xlim([datetime(2000,4,1,0,0,0),datetime(2000,6,30,0,0,0)]);

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 日付と時刻 的更多信息

产品


版本

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!