Legend inside for loop
Mostrar comentarios más antiguos
Hello,
I want to generate single legend outside for the figure window for all subplots. I am doing plots inside a loop like this:
t,x and y are given datas
for i=1:10
figure()
subplot(2,2,i)
plot(x,y)
hold on
plot(t,y)
subplot(2,2,i)
plot(x,y-y')
hold on
% ........
legend('1','2,','3')
end
But i am still getting the legend on all plots.
any help is appreciated
Dan
6 comentarios
Adam Danz
el 4 de Ag. de 2022
This should produce an error since it appears that you are attempting to generate 10 suplots in a 2x2 grid. But since we don't see the rest of what's going on within the loop, I can't be sure.
It's unclear what the goals is and what the actual results are.
danel james
el 4 de Ag. de 2022
Editada: danel james
el 4 de Ag. de 2022
Adam Danz
el 4 de Ag. de 2022
I must have missed the end. Thanks.
Adam Danz
el 4 de Ag. de 2022
Move figure out of the loop if you want all suplots within the same figure.
Move Legend out of the loop if you only want to create a legend for the last subplot.
danel james
el 4 de Ag. de 2022
Respuestas (1)
Walter Roberson
el 4 de Ag. de 2022
for i=1:10
figure()
subplot(2,2,i)
H(3*i-2) = plot(x, y, 'displayname', i + "A");
hold on
H(3*i-1) = plot(t, y, 'displayname', i + "B");
subplot(2,2,i)
H(3*i) = plot(x, y-y', 'displayname', i + "C");
hold on
% ........
end
legend(H)
Are you wanting only 3 entries in the legend, total? If so then you would want to be explicit about the line colors, and you would legend(H(1:3))
4 comentarios
danel james
el 4 de Ag. de 2022
Walter Roberson
el 4 de Ag. de 2022
for i=1:10
subplot(2,5,i)
H(3*i-2) = plot(x, y, 'displayname', i + "A");
hold on
H(3*i-1) = plot(t, y, 'displayname', i + "B");
H(3*i) = plot(x, y-y', 'displayname', i + "C");
hold off
% ........
end
legend(H)
danel james
el 4 de Ag. de 2022
x = 1:10; y = rand(size(x));
for i=1:10
subplot(2,5,i)
H(3*i-2) = plot(x, y, 'displayname', i + "A");
hold on
H(3*i-1) = plot(x, y, 'displayname', i + "B");
H(3*i) = plot(x, y-y', 'displayname', i + "C");
hold off
% ........
end
legend(H)
What size is y? If y is a vector then y - y' creates a square matrix in which each element of y is subtracted from each other element of y; the result of plotting that would be multiple lines.
Categorías
Más información sobre Legend en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
