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 件のコメント

Amir ghorab
Amir ghorab 2022 年 1 月 13 日
移動済み: DGM 2023 年 12 月 21 日
hey, I don't know why I can not make this work :((((((((((((((((((((
Can anyone please post a complete example????

サインインしてコメントする。

 採用された回答

Walter Roberson
Walter Roberson 2012 年 2 月 3 日

2 投票

XTickLabels = cellstr(num2str(round(log10(XTick(:))), '10^%d'));

1 件のコメント

Shih-Kai
Shih-Kai 2015 年 7 月 19 日
The solution is awesome. It solves the xticklabels formatted in LaTex interpreter. Thank you so much.

サインインしてコメントする。

その他の回答 (4 件)

Kristian Beedholm
Kristian Beedholm 2014 年 10 月 23 日

0 投票

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 2018 年 11 月 29 日

0 投票

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 2020 年 5 月 1 日

0 投票

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 2023 年 12 月 20 日
編集済み: Fabian 2023 年 12 月 20 日

0 投票

The easiest what I found is:
set(gca,'Xscale','log')
hope it helps

カテゴリ

質問済み:

2012 年 2 月 3 日

移動済み:

DGM
2023 年 12 月 21 日

Community Treasure Hunt

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

Start Hunting!

Translated by