number format change in axes of graphs
Ältere Kommentare anzeigen
I find that numbers on axes will be automatically displayed by common scale factor such as n power of ten when plotting a figure. It seems that n is usually 3 or bigger in absolute. Is it possible to scale it down to 2?
For example, 150 will be automatically displayed as 0.15 as the tick number with 10^3 on top of the y-axis, but it is expected to be 1.5 with 10^2 on top.
But I don't know how to realize it by code?
Could someone have a say? Thank you in advance.
1 Kommentar
Antworten (4)
Bruno Pop-Stefanov
am 20 Jan. 2014
1 Stimme
Please refer to this previous post for formatting tick labels:
3 Kommentare
Bruno Pop-Stefanov
am 22 Jan. 2014
I did some research and tested myself and apparently, there is no way to control the value of the exponent that MATLAB automatically generates (at least in the current releases).
What you could do instead is label the ticks manually with get and set and play with the exponent:
x = 1:0.1:1000;
y = linspace(-0.005, 0.005, numel(x));
% Find a negative exponent
n = 0;
lpart = floor(max(y));
while lpart == 0
n = n+1;
lpart = floor(10^n * max(y));
end
n = -n;
figure;
plot(x,y)
y_tick = str2num(get(gca, 'YTickLabel'));
set(gca, 'YTickLabel', sprintf('%.e|', y_tick*10^n))
I haven't figured a way to format "0.5e-02" instead of "5.0e-03"... Sorry I can't help you more.
LIU
am 22 Jan. 2014
Walter Roberson
am 20 Jan. 2014
0 Stimmen
Set yticklabel to the printable representation of the values you want; that will prevent the scale factor from being generated.
1 Kommentar
Juan Andrés Martin
am 5 Nov. 2020
Bearbeitet: Walter Roberson
am 6 Nov. 2020
Refer to "Specify Axis Tick Values and Labels" in Matlab Documentation, specifically "Control Value in Exponent Label Using Ruler Objects" paragraph.
Moreover, using Bruno Pop-Stefanov's code as a basis:
x = 1:0.1:1000;
y = linspace(-0.005, 0.005, numel(x));
plot(x,y)
ax=gca;
ax.YAxis.Exponent=-2;
That should do the trick
1 Kommentar
Walter Roberson
am 6 Nov. 2020
Note that this requires R2015b or newer.
If I recall correctly, there was also a way to do it in R2015a, but the axis property names were different -- YRuler instead of YAxis I think it was.
Paulo Providencia
am 17 Mär. 2026 um 19:01
Bearbeitet: Walter Roberson
am 17 Mär. 2026 um 20:36
0 Stimmen
This proposal has worked for me: https://superuser.com/questions/1206634/matlab-how-to-put-the-same-number-of-decimal-places-in-the-axes
Kategorien
Mehr zu Axis Labels finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

