MATLAB Answers

0

Plotting time series axis time labels

Asked by Larry McDermott on 2 Oct 2017
Latest activity Commented on by Larry McDermott on 2 Oct 2017

Hi All, I'm able to plot nice 3-d data using mesh or surf. I'm labeling the y axis as time per code block below. It looks great, the only problem is y time axis only displays the time at the mid point of the axis (so only one time displayed). How can I increase the density of the time labels so that I see for example 10 times labeled across the axis? Also, it would be great if this axis/labels auto scales (so if I zoom in and now by displayed full scale time is 10 minutes I'd still see 10 (or some number > 1) of labels for time. Thanks for any feedback!

figure('Name','Spectral Time Series Plot');
ax2=mesh(my3dx,XaxisTime,myd3y);
datetick('y','HH:MM:SS','keepticks','keeplimits');
xlabel('WaveNumber');
ylabel('Absorbance');
ylabel('Sample (time)');
zlabel('Absorbance');
axis tight;

  0 Comments

Sign in to comment.

1 Answer

Answer by Chad Greene
on 2 Oct 2017
 Accepted Answer

Unfortunately dateticks are not dynamic, meaning if you set the dateticks and then zoom, the ticks don't get updated. You can manually set which ticks you want labeled before calling datetick with 'keepticks', or you can use the dynamic datetick function, which you can get from File Exchange.

  2 Comments

Thanks for the quick response, I'll try the File Exchange function!

Hi Chad, I tried it and it shows the axis in the "serial date numbers" which were generated from a date/time string using datenum. Looking through the m-file but figured I'd ask if I'm doing something wrong? Thanks for any feedback.

figure('Name','Spectral Time Series Plot'); ax2=mesh(my3dx,XaxisTime,myd3y); %datetick('y','HH:MM:SS'); dynamicDateTicks([], 'hh/mm/ss',[]); xlabel('WaveNumber'); ylabel('Absorbance'); ylabel('Sample (time)'); zlabel('Absorbance'); axis tight;

Sign in to comment.