Problem in setting Yaxis value

25 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

Categories

Find more on Interactive Control and Callbacks in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!