How Do I Remove Scientific Notation From X/Y Axes on Plotted Data

I have large data files collected over a long time period where time sampling is in seconds. So measured data magnitude plotted against time may produce the Time scale going from 0 to tens of thousands of seconds. The X-Axis is set for Sampling Time and always is displayed in scientific notation. How do I prevent this scaling from showing scientific notation and still maintain proper scaling when zooming in on data? When I set XTick Label from num2str on the Time Array plotted, the time does not scale accurately when zooming in on specific regions of data.

 Accepted Answer

From R2015b onwards,
ax = gca;
ax.XRuler.Exponent = 0;

6 Comments

This is the exact answer I was looking for. It is frustrating that xtickformat (introduced in R2016b) does not provide this option.
Hi,
This is a great new feature.
Is it possible to set it as default / global in my startup.m file?
Kind regards
Bryan
In theory you might be able to
set(groot, 'DefaultAxesXRulerExponent', 0)
I would need to test whether that one works. It might be necessary to take a slightly different approach.
Alas, my internal concern was correct: you can set 'DefaultAxesXRuler' but it needs to be set to an XRuler object; you cannot go all the way down to setting the Exponent property that way.
Hey, thanks for your reply. I will look into that.

Sign in to comment.

More Answers (1)

Yes, when you set the tick label that then becomes hardwired text independent of the value.
Are the x axis variable(s) in datetime or just double in seconds? If numbers get too many orders of magnitude you may well run out of room to write all the necessary digits.
You can play around with the axis numeric or datetime ruler depending on the data source but owing to the aforementioned length of the data string you might consider scaling the values and using annotation either in the ticklabel format itself or just as part of the axis title--consider
hAx=subplot(2,1,1);
plot(linspace(0,35000,10)/1000,randn(1,10))
hAx.XAxis.TickLabelFormat='%.f k';
hAx(2)=subplot(2,1,2);
plot(linspace(0,35000,10)/1000,randn(1,10))
xlabel('Time, ksec')
results in
Unlimited variations on a them, of course...

Categories

Find more on Creating, Deleting, and Querying Graphics Objects in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!