I wanted to divide my 24 hour data into 1 hour each, but MATLAB divided it into 1 hour 2 minutes each?, Please help on how to divide into 1 hour each

 採用された回答

Adam Danz
Adam Danz 2021 年 11 月 18 日
編集済み: Adam Danz 2024 年 6 月 17 日

0 投票

Use xtickformat | ytickformat | ztickformat which sets the TickLabelFormat of the axes (Matlab R2016b or later)
datetick(tickaxis,dateFormat) with dateFormat='HH' will also set the datetime format but the axis label will not include the full date references that shows using the x|y|ztickformat functions. Note: datetick is officially no longer recommended starting in R2024a.

7 件のコメント

Ajmal Rasheeda Satheesh
Ajmal Rasheeda Satheesh 2021 年 11 月 18 日
I tried that and this is what I got, but I think this is just hiding values like 22:57 to 22, which is not what I want
Ajmal Rasheeda Satheesh
Ajmal Rasheeda Satheesh 2021 年 11 月 18 日
No worries I figured it out, I had 'keepticks' turned on, that somehow ruined the plot
Adam Danz
Adam Danz 2021 年 11 月 18 日
Good find. KeepTicks prevents matlab from re-computing an optimal tick interval given the length of tick labels.
Peter Perkins
Peter Perkins 2021 年 11 月 23 日
datetick is not really a great way to make plots against time. I recommend looking at plotting aganst a datetime instead.
Adam Danz
Adam Danz 2021 年 11 月 23 日
編集済み: Adam Danz 2021 年 11 月 23 日
datetick works with datetime values. I suppose xtickformat is a bit better since it includes the date stamp.
dtm = datetime('today') + seconds(0:10:1000);
data = rand(size(dtm));
plot(dtm, data)
datetick('x', 'MM', 'keepticks')
xlabel('minutes')
get(gca, 'xtick') % still datetime
ans = 1×10 datetime array
Nov 23, 2021, 00:00 Nov 23, 2021, 00:02 Nov 23, 2021, 00:04 Nov 23, 2021, 00:06 Nov 23, 2021, 00:08 Nov 23, 2021, 00:10 Nov 23, 2021, 00:12 Nov 23, 2021, 00:14 Nov 23, 2021, 00:16 Nov 23, 2021, 00:18
figure()
plot(dtm, data)
xtickformat('mm') % NOTE: mm with xtickformat vs MM with datetick 😕
xlabel('minutes')
Peter Perkins
Peter Perkins 2021 年 11 月 24 日
Adam, you are right. I assumed the OP was using datenums. Still, datetick is not really the right way to manage the ticks in a datetime plot. Better to use the axis properties.
>> d = datetime(2021,11,24) + minutes(0:30:14400);
>> x = 1:length(d);
>> plot(d,x)
>> ax = get(gca,"XAxis")
ax =
DatetimeRuler with properties:
Limits: [Nov 24, 2021 Dec 04, 2021]
TickValues: [Nov 24, 2021 Nov 25, 2021 Nov 26, 2021 Nov 27, 2021 Nov 28, 2021 Nov 29, 2021 Nov 30, 2021 Dec 01, 2021 ]
TickLabelFormat: 'MMM dd'
Show all properties
Adam Danz
Adam Danz 2021 年 11 月 24 日
Thanks Peter. I've updated my answer.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeDates and Time についてさらに検索

製品

リリース

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by