# Adding a legend manually for a plot generated by a loop

1 visualización (últimos 30 días)
Osh el 26 de En. de 2016
Comentada: Osh el 26 de En. de 2016
Hi,
I am generating a plot in Matlab one point at a time depending on how a condition is satisfied within a loop:
for i=1:size(Ind,1)
if(Ind(i)==1)
c='ro';
elseif(Ind(i)==2)
c='bo';
elseif(Ind(i)==3)
c='go';
end
plot(i,Y(i),c) %plotting some other value with the color chosen.
hold on
end
How do I add a legend entry to this? I want to associate the index position(1,2 and 3) to red,blue and green in the legend.
Thanks!
##### 0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

jgg el 26 de En. de 2016
Editada: jgg el 26 de En. de 2016
I think the issue is that you don't want to generate the plot like that; it's slow and makes it hard to label. Check out this solution instead:
Ind = rand(100,1) > 0.5;
Ind = Ind + (rand(100,1) > 0.75);
Ind = Ind + 1; %an index corresponding to the group/colour of Y
Vals = [1:100]'; %the X-axis, or location of Y
plot(Vals(Ind == 1),Y(Ind ==1), 'ro', Vals(Ind == 2), ...
Y(Ind == 2), 'bo', Vals(Ind == 3), Y(Ind == 3), 'go')
legend('Red Data', 'Blue Data', 'Green Data')
This is much more efficient and you don't have to loop over all your points.
So, in your example, you would just go:
i = [1:size(Ind,1)];
plot(i(Ind == 1),Y(Ind ==1), 'ro', i(Ind == 2), ...
Y(Ind == 2), 'bo', i(Ind == 3), Y(Ind == 3), 'go')
legend('Red Data', 'Blue Data', 'Green Data')
##### 1 comentarioMostrar -1 comentarios más antiguosOcultar -1 comentarios más antiguos
Osh el 26 de En. de 2016
Thank you! That's exactly what I was looking for.

Iniciar sesión para comentar.

### Categorías

Más información sobre Legend 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