Disabling printing underscore as subscript in figures

Underscores print as subscript in figures. Can I disable it because I want to print the underscores as well.
Thanks.

댓글 수: 2

Michael Marcus
Michael Marcus 2019년 4월 11일
편집: Stephen23 2019년 4월 11일
Although this allows underscores to print, it does not allow special symbols such as \mum to work.. Does anyone know how to allow both.
Mike Marcus
I did find out another way to keep the underscore. \_ does work ? I have answered my own question? Convert all underscores in the text to \_ instead of changing the interpreter to none.

댓글을 달려면 로그인하십시오.

 채택된 답변

Walter Roberson
Walter Roberson 2011년 6월 11일
편집: Image Analyst 2018년 1월 17일
Set the Interpreter property for that field to 'none'; the default for text() fields is LaTex.
title('This_title has an underline', 'Interpreter', 'none'); % Also works with xlabel() and ylabel()

댓글 수: 13

AP
AP 2011년 6월 11일
Thank you very much.
h=gco(1);
set(h,'text','none')
AP
AP 2011년 6월 11일
편집: Walter Roberson 2023년 5월 9일
Why this does not work in the following for loop? :(
for i=1:4
subplot(2,2,i)
imshow(im{i})
h=gco;
set(h,'text','none');
title(sprintf('%s_%d',mytitle{i},i))
end
It does not apply the change in text property and prints the subscript.
Personally I never count on gco being the object I am interested in.
In the above, gco is likely to be the result of imshow(), but imshow() returns an image object, and image objects do not have a 'text' field.
When you title(), a _new_ text object is created to hold the title. That new text object is not going to inherit the properties of the old one.
I would suggest,
for i = 1:4
subplot(2,2,i)
imshow(im{i})
title(sprintf('%s_%d',mytitle{i},i), 'Interpreter', 'none');
end
AP
AP 2011년 6월 11일
You're the best. Thanks.
Another method: Replace '_' by '\_' in the string.
Hang Dong
Hang Dong 2018년 1월 17일
편집: Hang Dong 2018년 1월 17일
Thank you, this works.
How can I use this for the legend of a plot? I have a string with underscores that I would like to use for the legend. I don't want to change it to "\_" and 'Interpreter', 'none' doesn't work with legend('show').
AM
AM 2018년 4월 12일
편집: Walter Roberson 2018년 4월 12일
try something like this:
leg=legend('data1','data2','data3');
set(leg,'Interpreter', 'none')
Walter Roberson
Walter Roberson 2018년 4월 12일
편집: Walter Roberson 2023년 5월 9일
@AM is correct: although legend() does not accept that name/value pair, you can set it on the handle.
It looks like it does not work for stackedplot:
title(filename, 'Interpreter', 'none');
It returns error:
Error using matlab.graphics.chart.Chart/title
Too many input arguments specified when using title with stackedplot.
Is there a way to disable understcore in stackedplot title?
It appears that stackedplot treats titles differently. The great majority of plot types are within axes, and in those cases the axes has a Title property that is a text() object. But stackedplot() does not use axes: it is a direct parent of a figure, and the Title property for it is a character vector, with there being no Interpreter property.
It appears that you need to use the method suggested by @Jan in https://www.mathworks.com/matlabcentral/answers/9260-disabling-printing-underscore-as-subscript-in-figures#comment_20281 -- namely to replace the _ with \_
title(regexprep(filename, '_', '\\_'))
Thank you for this easy solution to my messed-up plot titles!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

HE
HE 2020년 5월 5일
If you are using sprintf, \\_ should work for you.
old_cells = sprintf('Old cells: Y = %3.3f (X) \\^ %1.3f',coefs_old);
young_cells = sprintf('Young cells: Y = %3.3f (X) \\^%1.3f',coefs_young);

카테고리

도움말 센터File Exchange에서 Creating, Deleting, and Querying Graphics Objects에 대해 자세히 알아보기

태그

질문:

AP
2011년 6월 11일

댓글:

2025년 4월 16일

Community Treasure Hunt

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

Start Hunting!

Translated by