Subscripts in MATLAB Legends

229 Ansichten (letzte 30 Tage)
N/A
N/A am 13 Mär. 2015
This is a very basic question, and as my code suggests, it should work, but it's not: I want have the variables in these legend keys have subscripts, but when MATLAB displays the graph, they appear as written with the underscore symbol.
legend('e_1/e_{in}','e_2/e_{in}','e_{out}/e_{in}');
Thanks in advance for your help!
  40 Kommentare
Andrew Newell
Andrew Newell am 16 Mär. 2015
Thanks for letting us know the answer. It's good to know there is a workaround.
Lucas Teixeira
Lucas Teixeira am 10 Mai 2020
Thanks for sharing !

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Andrew Newell
Andrew Newell am 14 Mär. 2015
Bearbeitet: Andrew Newell am 14 Mär. 2015
I'm beginning to think you should submit a bug report. However, maybe you'll get more consistent results with
h=legend('$e_1/e_{in}$','$e_2/e_{in}$','$e_{out}/e_{in}$');
set(h,'Interpreter','latex')
Or, for better style,
h=legend('$e_1/e_\mathrm{in}$','$e_2/e_\mathrm{in}$','$e_\mathrm{out}/e_\mathrm{in}$');
  3 Kommentare
Andrew Newell
Andrew Newell am 14 Mär. 2015
Simone Vollaro
Simone Vollaro am 24 Jun. 2020
I know this is old, but since it's the first thing that appeared when I searched about it, here's for future references until they fix it. The bug is still here: in bodeplot/bodemag the LaTex interpreter breaks if 'complex' expressions with subscripts and superscripts are provided in the legend arguments.
%% Attempt with Tex, explicitly set for ease of reading
legend('W_{p1}^{-1}', 'W_{p2}^{-1}', 'W_{p3}^{-1}', 'Interpreter', 'tex')
%% First attempt with LaTex
legend('$W_{p1}^{-1}$', '$W_{p2}^{-1}$', '$W_{p3}^{-1}$', 'Interpreter', 'latex')
%% Second attempt with LaTex, following
% <https://www.mathworks.com/matlabcentral/answers/183015-subscripts-in-matlab-legends#comment_272533>
l = legend('$W_{p1}^{-1}$', '$W_{p2}^{-1}$', '$W_{p3}^{-1}$', 'Interpreter', 'latex')
set(l, 'string',{'$W_{p1}^{-1}$', '$W_{p2}^{-1}$', '$W_{p3}^{-1}$'})
%It seems that there's no need for line 35, since the assignment to l
%actually solves the problem and shows the correct legend
%But then if the legend contains something more "complex" than only
%subscripts and superscripts, it breaks again
l = legend('1+ $W_{p1}^{-1}$', '$1/W_{p2}^{-1}$', '$1-W_{p3}$', 'Interpreter', 'latex')
Here's what the Techical Support told me:
"This appears to me like a bug, since the same syntax that you used when creating the legend in a standard plot with 3 lines works as expected, while when using bodeplot or bodemag a formatting issue is encountered. I will inform our development team right away so that they can consider to fix this for a future release."

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (3)

Ankush Chakrabarty
Ankush Chakrabarty am 11 Dez. 2017
In MATLAB R2016a, the fix seems to be adding a "\_" instead of a "_"
e.g. h = legend('$G\_{\mathrm{a}}$', '$G\_{\mathrm{b}}$'); set(h, 'Interpreter', 'latex');
  1 Kommentar
Arkadeb Sengupta
Arkadeb Sengupta am 27 Sep. 2020
This one worked in 2018b too. The other fixes didn't.

Melden Sie sich an, um zu kommentieren.


Muhammad Sarfraz Mirza
Muhammad Sarfraz Mirza am 5 Okt. 2021
TRY this
clc
clear all
a=-360:1:360;
b=sind(a);
c=cosd(a);
plot(a,b)
hold on
plot (a,c)
xlabel('angle in degrees')
ylabel('value of funtion')
title('sin and cos curve')
legend('sin curve','cos curve')
hold off

Image Analyst
Image Analyst am 14 Mär. 2015
>> doc interpreter
Also, backslash is a special character that sometimes modifies what comes after it, so it's not surprising you get unexpected behavior if you don't know that.
  2 Kommentare
N/A
N/A am 14 Mär. 2015
Nope, not working. The legend still reads "e_out..." and so forth.
N/A
N/A am 14 Mär. 2015
Here's what I'm faced with now: It will properly do the subscripts, but at any random run of the script. I just did it now, and it worked. Ran the same thing two seconds later...back to not working.

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by