MATLAB: Is it possible to manipulate a plot axis; i.e., divide values by 1000 so that the x axis range is 0 to 300 instead of 0 to 300000 and also get rid of exponential notation

axisMATLABplotplotting

I am making X–Y plots of results from very long simulations. Right now, my plots are unsightly because:
  1. The X axis goes from 1 to hundreds of thousands of femtoseconds.
  2. Also, I don't get axis labels like "300000" (for example). I get scientific notation but it doesn't look good. I get "3.0" (for example) with a tiny "x 10^5) below the labels. I don't know how to get "300000" or add the scientific notation into each label on the axis.
Here is my plotting command:
plot(Velocity.TotalVelocity)
I know I could make an X–Y plot and divide the X (time) values by 1000 but then I'd end up with another huge array. So I'm wondering if there's a way to get the X values to appear in the plot as divided by 1000.
Thank you for any advice.

Best Answer

You can explicitly set the tick labels:
plot(linspace(0,3e5,10),rand(1,10))
xticklabels(arrayfun(@(x)strrep(sprintf('%.1e}',x),'e','x10^{'),xticks,'UniformOutput',false))