Adding fractions to axis tick marks

26 vues (au cours des 30 derniers jours)
Mitchell Frechette
Mitchell Frechette le 1 Nov 2016
Commenté : Erik RF le 20 Mar 2021
How do you turn the tick mark labels into fractions rather than decimals. Take the following code for example. I would like the tick mark to remain in their current location but display their associated fraction instead.
x=.1:.1:.5
y=1:5
clf
plot(x,y,'color','r','linewidth',2)
set(gca, 'XTick', [1/16 1/8 3/16 1/4 5/16 3/8 7/16 1/2])

Réponse acceptée

Walter Roberson
Walter Roberson le 1 Nov 2016
If you are using R2014b or later, you
set(gca, 'TickLabelInterpreter', 'latex', 'XTickLabel', {'$\frac{1}{16}$', '$\frac{1}{8}$', '$\frac{3}{16}$', '$\frac{1}{4}$', '$\frac{5}{16}$', '$\frac{3}{8}$', '$\frac{7}{16}$', '$\frac{1}{2}$'})
If you are using an earlier version, you could go through some trouble to text() the individual labels in place, because in those earlier versions, individual text() could have an interpreter but TickLabelInterpreter could not be set. So in those earlier versions it would probably be easier to
set(gca, 'XTickLabel', {'1/16' '1/8' '3/16' '1/4' '5/16' '3/8' '7/16' '1/2'})
  1 commentaire
Mitchell Frechette
Mitchell Frechette le 1 Nov 2016
Thank you! This worked just how I wanted.

Connectez-vous pour commenter.

Plus de réponses (1)

Jan
Jan le 31 Oct 2018
Is it possible to find a soft-code this? So instead of
set(gca, 'TickLabelInterpreter', 'latex', 'XTickLabel', {'$\frac{1}{16}$', '$\frac{1}{8}$', '$\frac{3}{16}$', '$\frac{1}{4}$', '$\frac{5}{16}$', '$\frac{3}{8}$', '$\frac{7}{16}$', '$\frac{1}{2}$'})
I would like to go for a version where
a=[16 8 4 2 1]
set(gca, 'TickLabelInterpreter', 'latex', 'XTickLabel', {'$\frac{1}{a}$'})
So basicly my question is, how to load a variable while writing in a math mode of latex.
  1 commentaire
Erik RF
Erik RF le 20 Mar 2021
Yes, try this.
val = 0:0.25:10; % your vector of values in decimal form
[num, den] = rat(num); % convert to rational form
ticks = '$\frac{'+string(enu)+'}{'+string(den)+'}$';
set(gca, 'TickLabelInterpreter', 'latex', 'XTickLabel', ticks)
You can also add more info to each label if you want, for example add pi like this:
ticks = '$\frac{'+string(enu)+'}{'+string(den)+'}\pi$';

Connectez-vous pour commenter.

Tags

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by