Format axes Tick Labels in log scale

243 vues (au cours des 30 derniers jours)
Maurizio De Pitta'
Maurizio De Pitta' le 3 Fév 2012
Déplacé(e) : DGM le 21 Déc 2023
Dear all, an annoying issue when plotting on log scales, is apparently not being able to control the format of axis tick labels.
For example: given XTick = [0.1,1,10,30];
I want to manually set my own labels, e.g. XTickLabels = num2str(10^-1, 10^0, 10^1, 10^-1].
How can I format XTickLabels so that I display tick labels as powers of ten (i.e. base^{exponent} in latex interpreter)?
Right now MATLAB either omits the last label if XTickLabelModel is 'auto' or can display strings of the type '10^X' or can show only numbers as decimals (i.e. '0.1, 1, 10, 0.1').
Is there a way to control directly the format of axis tick labels, or I have to work it around using a text(-) object and switching XTickLabels off?
Thank you in advance for your help. Maurizio
  1 commentaire
Amir ghorab
Amir ghorab le 13 Jan 2022
Déplacé(e) : DGM le 21 Déc 2023
hey, I don't know why I can not make this work :((((((((((((((((((((
Can anyone please post a complete example????

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 3 Fév 2012
XTickLabels = cellstr(num2str(round(log10(XTick(:))), '10^%d'));
  1 commentaire
Shih-Kai
Shih-Kai le 19 Juil 2015
The solution is awesome. It solves the xticklabels formatted in LaTex interpreter. Thank you so much.

Connectez-vous pour commenter.

Plus de réponses (4)

Kristian Beedholm
Kristian Beedholm le 23 Oct 2014
But there isn't a latex interpreter for the xticklabels. You have to do it with text, I guess. Solving the same, I came up with this:
y=ylim;
yp=y(1)-abs(diff(ylim))*0.05;
x=get(gca,'xtick');
set(gca,'xticklabel',[],'xtickmode','manual');
for j=1:length(x)
h=text(x(j),yp,['10^{' num2str(log10(x(j))) '}']);
set(h,'HorizontalAlignment','center','fontsize',get(gca,'fontsize'))
end

Cecilia Fleeger
Cecilia Fleeger le 29 Nov 2018
I come across this post and find a solution. To get read of '^' in 10^3, for example is all about TickLabelInterpreter property.
xtick=10.^(-6:-2);
xticklab = cellstr(num2str(round(-log10(xtick(:))), '10^-^%d'));
set(gca,'XTick',xtick,'XTickLabel',xticklab,'TickLabelInterpreter','tex')

Mark Cohen
Mark Cohen le 1 Mai 2020
Here is a simple solution to formatting labels on MATLAB log plots
yt = get(gca,'ytick');
for j=1:length(yt)
% With log plots, MATLAB defaulted to exponential format, that is difficult for lay
% readerst to understand. In my case, I wanted integer format.
YTL{1,j} = num2str(yt(j),'%d');
end
yticklabels(YTL);

Fabian
Fabian le 20 Déc 2023
Modifié(e) : Fabian le 20 Déc 2023
The easiest what I found is:
set(gca,'Xscale','log')
hope it helps

Community Treasure Hunt

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

Start Hunting!

Translated by