Problem in setting Yaxis value

3 views (last 30 days)
T S Singh
T S Singh on 25 Aug 2018
Edited: Yair Altman on 27 Aug 2018
I am using MATLAB 2015a. After going through the Q&A I finally wrote the command lines to set the Yaxis values as exponent, but its not working.
Here is the code
x = linspace(0,5,1000);
y = 100*exp(x).*sin(20*x);
plot(x,y)
ax = gca;
ax.YAxis.Exponent = 2;
Its showing this error "
No appropriate method, property, or field 'YAxis' for class
'matlab.graphics.axis.Axes'.
Error in rough6 (line 32)
ax.YAxis.Exponent = 2;"
Please help me to convert the Yaxis value in desired exponent form.
Thanks

Accepted Answer

Star Strider
Star Strider on 25 Aug 2018
I don’t remember when that was introduced. It was obviously after R2015a.
One approach to a work-around:
x = linspace(0,5,1000);
y = 100*exp(x).*sin(20*x);
plot(x,y)
ax = gca;
% ax.YAxis.Exponent = 2;
yt = ax.YTick;
xpnt = 2;
new_tick_lbls = 10.^log10((10^-xpnt)*abs(yt)).*sign(yt);
ytlblc = sprintfc('%.0f',new_tick_lbls); % Undocumented: ‘sprintfc’; % Undocumented: ‘sprintfc’
ax.YTickLabel = ytlblc;
text(min(xlim), max(ylim)*1.05, sprintf('\\times10^{%.0f}', xpnt))
Experiment to get the result you want.

More Answers (1)

Yair Altman
Yair Altman on 27 Aug 2018
Edited: Yair Altman on 27 Aug 2018
Try this - note that it relies on the hidden/undocumented axis property YRuler (and similarly for XRuler, ZRuler):
ax.YRuler.Exponent = 2;
This works from R2014b onward. Starting in R2015b you can use YAxis instead of YRuler, but YRuler can still be used to this day as a synonym. If you want to take a careful approach in case YRuler will someday stop working, do this:
try
ax.YAxis.Exponent = 2;
catch
ax.YRuler.Exponent = 2;
end

Community Treasure Hunt

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

Start Hunting!