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 :
et à la fin, je demande
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Le problème : ça ne marche pas à tous les coups ... :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 names = {'IP','IX'}; ind = [1 7]; legend(C(ind),names,'Location','SouthEast');Une idée du pourquoi ?Error using ==> legend at 206 Handle must be an axes or child of an axes.
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' ...
Partager