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')
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 Exchange에서 Dates and Time에 대해 자세히 알아보기

제품

릴리스

R2021b

질문:

2021년 11월 18일

편집:

2024년 6월 17일

Community Treasure Hunt

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

Start Hunting!

Translated by