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

 Réponse acceptée

Adam Danz
Adam Danz le 18 Nov 2021
Modifié(e) : Adam Danz le 17 Juin 2024

0 votes

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 commentaires

Ajmal Rasheeda Satheesh
Ajmal Rasheeda Satheesh le 18 Nov 2021
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 le 18 Nov 2021
No worries I figured it out, I had 'keepticks' turned on, that somehow ruined the plot
Adam Danz
Adam Danz le 18 Nov 2021
Good find. KeepTicks prevents matlab from re-computing an optimal tick interval given the length of tick labels.
Peter Perkins
Peter Perkins le 23 Nov 2021
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 le 23 Nov 2021
Modifié(e) : Adam Danz le 23 Nov 2021
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 le 24 Nov 2021
Thanks Peter. I've updated my answer.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Produits

Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by