Given you have 2019 in the variable names but won't give actual start/stop dates/times...
is a 17,508 element vector. At 15 minutes from beginning of 2019, this would be:
where 17,377 is length of the series from 1/1/2019 thru 7/1/2019; I just returned it first to get the number of elements to see how many more were needed to match up.
>> [t(1) t(end)]
1×2 datetime array
01-Jan-2019 00:00:00 02-Jul-2019 08:45:00
Given the above, then
with monthly ticks/labels as dates. Salt to suit...
Still think things would be easier with durations and datetimes and probably the timetable would handle a lot of this for you automagically, but without further context specific code isn't feasible...
This is somewhat problematic given the behavior of the datetime axis object as still being pretty new to the fold it isn't yet always as friendly as it could be...starting with a numeric axes at the bottom, the process is
It takes the dummy line to turn the default numeric axes into the datetime axes; you can't set datetime limits on a numeric axes directly. This is what isn't yet as transparent as could be with the new-fangled axes. Still much better than fooling with the old datenum and dateticks mess.
A little cleanup could include