[eval] Légende groupée pour plot
Bonjour,
J'utilise la fonction eval pour tracer des nuages de points à partir de matrices.
Par exemple je trace les points des matrices ip1, ip2, ... ip6 en rouge, celles des matrices ix1, ... ix6 en vert, etc.
Je voudrais que dans ma légende les couleurs (rouge, vert, etc) n'apparaissent qu'une fois (pour les associer au texte 'IP', 'IX', etc).
Actuellement, je procède comme il suit :
Code:
1 2 3 4 5 6 7 8 9 10 11
| % Exemple avec ip et ix seulement
for i = 1:6
if eval(['ip' num2str(i)]) ~= 0
C(i) = plot(eval(['ip' num2str(i) '(:,1)']),log10(eval(['ip' num2str(i) '(:,5)'])),'o','MarkerFaceColor','r','MarkerEdgeColor','r');
end
end
for i = 7:12
if eval(['ix' num2str(i)]) ~= 0
C(i) = plot(eval(['ix' num2str(i) '(:,1)']),log10(eval(['ix' num2str(i) '(:,5)'])),'o','MarkerFaceColor','g','MarkerEdgeColor','g');
end
end |
et à la fin, je demande
Code:
1 2 3
| names = {'IP','IX'};
ind = [1 7];
legend(C(ind),names,'Location','SouthEast'); |
Le problème : ça ne marche pas à tous les coups ... : Error using ==> legend at 206
Handle must be an axes or child of an axes.
Une idée du pourquoi ?
Merci !!
PS : j'ai essayé d'utiliser 'hggroup', 'parent' et ce genre de choses (dont je ne suis absolument pas familière) mais je ne vois pas comment faire en utilisant des 'eval' et des 'num2str' ...