A customized legend using LaTeX

125 views (last 30 days)
Hello! I wanted to make a customized legend for two functions on the same graph and I need both flat text and LaTeX support. At the moment I built something like this:
figure;
N = 1:1:length(train_value);
plot(N, train_value, N, test_value, 'LineWidth', 1.5);
xlabel('numer iteracji', 'fontweight', 'bold');
ylabel('\boldmath$\overline{\kappa}_C$', 'Interpreter', 'latex', 'fontweight', 'bold', 'fontsize', 17);
l = legend('XXX', 'YYY');
set(l, 'Interpreter', 'latex', 'string', 'warto\''s\''c \boldmath${\overline{\kappa}_C}$ dla zbior\''ow treningowych', 'Interpreter', 'latex', 'string', 'warto\''s\''c \boldmath${\overline{\kappa}_C}$ dla zbior\''ow testowych');
It works almost well. The only problem is that the last settings instead of being added overwrite the first settings. As a result, I have a legend for only one graph.

Accepted Answer

Star Strider
Star Strider on 27 Dec 2017
Edited: Star Strider on 27 Dec 2017
I would put the LaTeX strings in the legend entries themselves, then define the interpreter in the set call.
Example
x = 1:10; % Create Data
y1 = randn(1, 10); % Create Data
y2 = rand(1, 10); % Create Data
figure(1)
plot(x, y1, 'pg', x, y2, 'pr')
l = legend('$e^{x}$', '$U(x)$');
set(l, 'interpreter', 'latex')
  1 Comment
John K. George
John K. George on 14 Sep 2021
This code (below) works for me;...however, I need to display one legend with multiple plots of "string(app.selectedData1)". Currently, only the most recent selectedData1 is displayed in legend. How do I update the code here (below), to display all values of string(app.selectedData1)??
plot(data(:,1), data(:,2),'DisplayName',string(app.selectedData1))
t = legend(string(app.selectedData1),'Interpreter','latex')

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!