How can I get text in figures to display symbols?

10 visualizaciones (últimos 30 días)
David Holman
David Holman el 6 de Jun. de 2017
Comentada: Kevin Snyder el 13 de Feb. de 2018
I know how to display greek letters in a plot label using xlabel and ylabel, but when I try to get other text in a figure (not on a plot) to display greek letters or other symbols it doesn't work. When I use:
uicontrol('Style','text','Units','pixels','Position',[1557 970 135 20], ...
'String','\lambda','FontSize',10);
the result that's displayed is "\lambda", not the small case greek letter. I'm also trying to display a degree symbol and the same thing happens when I use "\circ", and I have to use a * in the mean time.
Any suggestions? Thanks, Dave

Respuesta aceptada

Walter Roberson
Walter Roberson el 6 de Jun. de 2017
Editada: Walter Roberson el 9 de Jun. de 2017
You can set the uicontrol style to push or listbox or radio or toggle or checkbox or popup (but not text or edit). Then you can set the String property to '<HTML>λ' . You might also want to set the Enable property to off.
  5 comentarios
Walter Roberson
Walter Roberson el 20 de Jul. de 2017
ASCII was never defined beyond 127. After that you are into ISO 8896-1 or whatever is supported by the font you are using.
MATLAB uses Unicode code points up to 65535. I find fileformat.info to have useful tables for detailed information, such as http://www.fileformat.info/info/unicode/char/b0/index.htm
The ultimate authority is unicode.org
Google is pretty good at finding information about individual symbols; for example search for "unicode degree symbol" or search for "unicode 176" or search for "U+00B0" (you do not need any other keywords if you know the hex code point)
Kevin Snyder
Kevin Snyder el 13 de Feb. de 2018
Sorry to dig this up, I was having a problem displaying Greek symbols in a table header when I came across this post. I thought I would come back with my solution because it raised a question:
Is there any particular reason or convention converting the character to a string would not work?
This is what worked for me when changing properties of a uitable:
infoTable.ColumnName = {'Sweep '+string(char(955))+' [nm]',...};

Iniciar sesión para comentar.

Más respuestas (2)

Yair Altman
Yair Altman el 14 de Jul. de 2017
Editada: Walter Roberson el 14 de Jul. de 2017
%show the 'for all' and 'beta' symbols
labelStr = '<html>&#8704;&#946; <b>bold</b> <i><font color="red">label</html>';
jLabel = javaObjectEDT('javax.swing.JLabel',labelStr);
[hcomponent,hcontainer] = javacomponent(jLabel,[100,100,40,20],gcf);
The idea here is to use HTML formatting to add the special characters. This is in line with Walter Roberson's answer, but would be displayed in a text label rather than a button.
As an alternative, you could set the HTML string on a button uicontrol, and then remove its border (which provides the 3D visual illusion) as explained here:

dpb
dpb el 6 de Jun. de 2017
Unfortunately, the uicontrol objects do not expose an 'Interpreter' property as does the text object or even labels.
Unless Yair has some secret tricks on his "Undocumented Matlab" site, I think the only option would be to revert back to the text object to actually do the display if there isn't an installed font with the characters you want without resorting to TeX.
  1 comentario
David Holman
David Holman el 9 de Jun. de 2017
Unfortunately, text only allows text on a plot, and I'm trying to add text to a figure that's "not on a plot". Thanks for pointing out the "Undocumented Matlab" site, I bookmarked it. Dave

Iniciar sesión para comentar.

Categorías

Más información sobre Labels and Annotations en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by