Hello everyone,
I want to have subscript labels in axeses in matlab. Let say I have
J = [1 2 3; 4 5 6];
bar(J);
set(gca,'XTickLabel',{'I_0','I_1'});
I can't get I_0 in subscript. How can I do this. I m using Matlab 2009 on Ubuntu.

 Réponse acceptée

Star Strider
Star Strider le 13 Juil 2014

0 votes

Here is one way, there may be others:
J = [1 2 3; 4 5 6];
bar(J);
set(gca,'XTickLabel','');
set(gca, 'XTickLabelMode','manual')
hxt = get(gca, 'XTick')
ypos = min(ylim) - diff(ylim)*0.05;
text(hxt, [1 1]*ypos, {'I_0','I_1'}, 'HorizontalAlignment', 'center')
You will have to experiment with the ypos value for text to put it exactly where you want it. I did my best to make it as adaptive as I could.

5 commentaires

By the way, usually I have the opposite problem. I often put the title of the image as the filename, and if the filename has an underline in it , it makes the character following the underline a subscript, which looks ridiculous. To avoid that you need to set the interpreter equal to none
title(imageFileName, 'Interpreter', 'none');
Star Strider
Star Strider le 13 Juil 2014
Good point. ‘Axis Properties’ doesn’t have in 'Interpreter' option.
Aravin
Aravin le 14 Juil 2014
Modifié(e) : Aravin le 14 Juil 2014
Dear Strider,
Thank you for your reply. It works well for given example. I want exactly that but when I use it for my real problem where i have 5 xtick values then it gives error that x y should have same dimensions. Could you please modify it so that I can use it.
Example:
J = [1 2 3;4 5 6;7 8 9;10 11 12;13 14 15];
bar(J);
set(gca,'XTickLabel','');
set(gca, 'XTickLabelMode','manual')
hxt = get(gca, 'XTick')
ypos = min(ylim) - diff(ylim)*0.05;
text(hxt, [1 1]*ypos, {'F_0|F_1','F_0|F_2','F_0|F_3','F_0|F_4','F_0|F_5'}, 'HorizontalAlignment', 'center')
And how to make text italic (F_0|F_1) ?
Aravin
Aravin le 14 Juil 2014
I have Figured it out. Thank you.
Star Strider
Star Strider le 14 Juil 2014
My pleasure!
GMT-6 here so I’m just now seeing your reply.
You need to use ‘ones(1,length(hxt))*ypos’ to make the x and y vectors equal for the ‘text’ statement, but you’ve already figured that out.

Connectez-vous pour commenter.

Plus de réponses (1)

dpb
dpb le 13 Juil 2014
Modifié(e) : dpb le 13 Juil 2014

2 votes

For some unfathomable reason, TMW has not implemented the TeX or LaTeX interpreter for axis labels so you'll have no joy that route.
set(gca,'xticklabel',[]) % hide the existing labels
then use
xt=get(gca,'xtick').';
text(xt,-0.2*ones(size(xt)),num2str(xt-1,'I_%d'), ...
'horizontal','center')
(ADDENDUM--incorporate the horizontal alignment to center)
Salt to suit...

Catégories

En savoir plus sur Labels and Annotations dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by