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

2 ビュー (過去 30 日間)
s
s 2023 年 3 月 31 日
回答済み: Atsushi Ueno 2023 年 4 月 1 日
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 Center および File Exchange日付と時刻 についてさらに検索

製品


リリース

R2023a

Community Treasure Hunt

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

Start Hunting!