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개)

카테고리

제품

릴리스

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