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

14 views (last 30 days)
s
s on 31 Mar 2023
Answered: Atsushi Ueno on 1 Apr 2023
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したいです。)
何か良い方法ありますでしょうか。教えていただければ幸いです。

Accepted Answer

Atsushi Ueno
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)
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)]);

More Answers (0)

Categories

Find more on 日付と時刻 in Help Center and File Exchange

Products


Release

R2023a

Community Treasure Hunt

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

Start Hunting!