timetable型のデータで年を除く、月日のみの傾向を可視化する方法
2 views (last 30 days)
Show older comments
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))
このデータの月日(年は除く)の傾向を可視化したいです。しかし、datetime型は年までセットで
持ってるため、以下のようにplotすると横軸は同じ「4月24日」と「5月24日」でも2016年と2017年のデータを
別物として認識し、plotします。
plot(ttData.dtData,ttData.Data)
本来であれば、これで良いのですが、年は関係なく、横軸に4月から3月までをとり、
月日のみの傾向がみたい場合は、どうすればいいでしょうか。
(つまり、2016年の「4月24日」と2017年の「4月24日」を同じx軸のデータとしてplotしたいです。)
何か良い方法ありますでしょうか。教えていただければ幸いです。
0 Comments
Accepted Answer
Atsushi Ueno
on 1 Apr 2023
カレンダー期間配列(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)
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 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!