Adding a legend manually for a plot generated by a loop
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposta accettata
jgg
il 26 Gen 2016
Modificato: jgg
il 26 Gen 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:
Y = 10*rand(100,1); %your data
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')
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Legend in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!