How do I create a legend involving multiple plots created in a for loop?

44 visualizaciones (últimos 30 días)
I am trying to create a figure with 3 plots and a legend detailing what each plot is. Each plot is created in a for loop.
for j= 1:3
y = j;
figure(1);
plot(y);
hold on;
end
Thus, there will be 3 lines labeled in the legend. I appreciate any help that you all can provide!

Respuestas (3)

Adam Danz
Adam Danz el 26 de Abr. de 2019
Editada: Adam Danz el 26 de Abr. de 2019
Here are some demos you can follow.
Option 1: add legend labels when you call legend
figure()
axes
hold on
nLoops = 3;
ph = gobjects(1,nLoops);
for j= 1:nLoops
y = randn(10,1)+j;
ph(j) = plot(y, '-o');
end
legend(ph, {'first', 'second', 'third'})
Option 2: add legend labels within the loop
figure()
axes
hold on
nLoops = 3;
ph = gobjects(1,nLoops);
for j= 1:nLoops
y = randn(10,1)+j;
ph(j) = plot(y, '-o', 'DisplayName', sprintf('line %d',j));
end
legend(ph)
  4 comentarios
Kelsey Shipman
Kelsey Shipman el 27 de Abr. de 2019
I got the error on your sample code and when I adapted it to my own.
MATLAB_R2019a
Adam Danz
Adam Danz el 27 de Abr. de 2019
Editada: Adam Danz el 15 de Mayo de 2019
I just triple-checked and the two demos I wrote function perfectly in 2019a. What was the error message?
Could you share a reproducible version of your code? I'm sure it's a small error; easy to fix.

Iniciar sesión para comentar.


Image Analyst
Image Analyst el 27 de Abr. de 2019
Try this:
figure()
hold on
numberOfLoops = 3;
for k = 1 : numberOfLoops
y = randn(10,1) + k;
plot(y, '.-', 'MarkerSize', 20, 'LineWidth', 2);
% Make up a string for this particular line plot.
legends{k} = sprintf('This is plot #%d', k);
end
legend(legends) % Display all the legend texts.
grid on;
0000 Screenshot.png

Kelsey Shipman
Kelsey Shipman el 29 de Abr. de 2019
I appreciate all of your help. The problem was due to an undiagnosed error at the beginning of my script, so I have figured out the problem, and my legend is now displaying appropriately.

Categorías

Más información sobre Legend en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by