Legend for variable number of plots

14 vues (au cours des 30 derniers jours)
Kiran Sagar
Kiran Sagar le 9 Mar 2016
Commenté : Kiran Sagar le 10 Mar 2016
Hi, I am plotting a variable 'y' whose size is 'm-by-n' against 'x' whose size is 'm-by-1'. So, I get 'n' plots on the current figure. Now, how can I write insert legend without knowing the value of n. I mean, how do I give dynamic input to legend function.
plot(x,y)
legend('Mode 1','Mode 2','Mode 3',...'Mode n')

Réponse acceptée

Guillaume
Guillaume le 9 Mar 2016
legend(arrayfun(@(mode) sprintf('Mode %d', mode), 1:size(y, 2), 'UniformOutput', false))
Would be one way of doing it.
  3 commentaires
Guillaume
Guillaume le 9 Mar 2016
Modifié(e) : Guillaume le 9 Mar 2016
The arrayfun part builds a cell array of strings that is then passed to legend. It is equivalent to:
legendstrings = cell(1, size(y, 2)); %arrayfun automatically constructs a cell array the right size
for mode = 1:size(y, 2) %this is the second input of arrayfun
legendstrings{mode} = sprintf('Mode %d', mode); %1st input of arrayfun, sort of
end
legend(legendstrings);
Kiran Sagar
Kiran Sagar le 10 Mar 2016
Thank you very much. That was helpful

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by