Scientific notation at y-axis with "ax.YAxis.Exponent"

51 vues (au cours des 30 derniers jours)
Mepe
Mepe le 11 Juin 2021
Commenté : Mepe le 14 Juin 2021
I want to change the notation of the log y-axis:
Here is an example code, which doesn't work:
y = [0.1 0.3 0.5 1];
figure(1),
plot(y)
yticks([0.1 0.5 1])
set(gca,'yscale','log')
ax = gca;
ax.YAxis.Exponent = 2
I found out that exponent notation doesn't work when yticks is used in conjunction with logarithmic scaling.
Any ideas???

Réponse acceptée

dpb
dpb le 11 Juin 2021
Well, here's a crude first pass...
expn=floor(log10(yticks));
mant=yticks./10.^(expn);
lbls=cellstr(num2str([mant;expn].','%d*10^{%d}'));
lbls=strrep(lbls,'1*','')
lbls =
3×1 cell array
{'10^{-1}' }
{'5*10^{-1}'}
{' 10^{0}' }
>>
Then
yticklabels(lbls)
produces
Salt to suit; no guarantees on how general will turn out to be...
  13 commentaires
Walter Roberson
Walter Roberson le 14 Juin 2021
round. I did not want to assume that log10(0.001) was guaranteed to be exactly -3
Mepe
Mepe le 14 Juin 2021
Dear Walter and dpb,
thanks a lot for your support!

Connectez-vous pour commenter.

Plus de réponses (1)

dpb
dpb le 11 Juin 2021
I don't see a user-settable format to force the notation (although I didn't use Yair's getundoc to poke) with arbitrary tick values but
yticks(10.^(-1:1))
will trigger redrawing with the desired notation.
It's having intermediate tick labels that causes the switch.
  2 commentaires
Mepe
Mepe le 11 Juin 2021
Thanks for the answer, but I would like to set the individual ticks myself ...
dpb
dpb le 11 Juin 2021
Well, you can have one or the other, not both automagically.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by