How to move the Yaxis exponent outside

I would like to move the exponent of the Y axis that is naturally above the figure, to the outside (left side) of the figure.
See my impressive plot attached. Any suggestion (I mean with an automatic way) such as 'TickDir' 'out' for the ticks, but for the exponent x10^6 here. Cheers

 Accepted Answer

I don't know of a way to move that exponent label, but if you have R2023b or later, you can use the ysecondarylabel function to set its string to empty, and then create your own exponent label (using the text function) where you want.
plot(1e6:1e6:7e6)
ylim([1e6 7.5e6])
ax = gca();
ysecondarylabel(ax,'')
text(ax, ...
'String','x10^{6}', ...
'Units','normalized', ...
'Position',[0 1], ...
'HorizontalAlignment','right', ...
'VerticalAlignment','bottom')

4 Comments

Thanks for your method, I do not have 2023 but I will keep writing using text.
Best
You're welcome!
Hi @Voss, I use
>> version
ans =
'23.2.0.2515942 (R2023b) Update 7'
and with your solution
plot(1e6:1e6:7e6)
ylim([1e6 7.5e6])
ax = gca();
ysecondarylabel(ax,'')
text(ax, ...
'String','x10^{6}', ...
'Units','normalized', ...
'Position',[0 1], ...
'HorizontalAlignment','right', ...
'VerticalAlignment','bottom')
I get the following warning/error:
String scalar or character vector must have valid interpreter syntax:
x10^{6}
and the following plot:
What can I do to get your result?
It seems like you may have set the default text interpreter to latex instead of tex. Try explicitly specifying tex as the interpreter for this text object:
text(ax, ...
'Interpreter','tex', ...
'String','x10^6', ... {} optional in this case
'Units','normalized', ...
'Position',[0 1], ...
'HorizontalAlignment','right', ...
'VerticalAlignment','bottom')

Sign in to comment.

More Answers (1)

Here is one example how to get it done:
% Sample data for plot display
x = linspace(0, 2*pi, 100);
y = 1e6 * sin(x);
%% Demo 1
figure;
plot(x, y);
yticks([0, max(y)])
yticklabels({'0', '10^6'});
ylabel('Y-axis');
title('Example Plot');
xlabel('X-axis');
%% Demo 2
figure;
plot(x, y);
yticks([min(y), 0, max(y)])
yticklabels( {'-10^6', '0', '10^6'});
ylabel('Y-axis');
title('Example Plot');
xlabel('X-axis');

1 Comment

Thanks for your answer, but this is not what I am looking for. On your second example, I would like -1 0 1 to be displayed on the y axis; with the exponent at the top. I do not want the exponent x10^6 written at each line like in your example, I need the number on the left of the figure rather than above it, like in my example.

Sign in to comment.

Categories

Find more on Graphics Object Properties in Help Center and File Exchange

Asked:

on 19 Feb 2024

Commented:

on 30 May 2024

Community Treasure Hunt

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

Start Hunting!