9
votes

Comment puis-je ajouter deux légendes à un seul terrain à Matlab?

J'aimerais ajouter deux légendes à un terrain à Matlab. Comment puis-je faire cela?


0 commentaires

4 Réponses :


10
votes

Vous pouvez créer un deuxième axe superposé, avec une légende de son propre (dans un emplacement différent du parcours).


EDIT:

Voici un exemple rapide: xxx

capture d'écran


0 commentaires

5
votes

Pour créer une légende collante, vous pouvez appeler copyobj code> xxx pré>

la fonction CLOXOBJ code> conserve simplement sa légende associée dans la figure. p>

Ceci fonctionne dans un seul axes (pas besoin de créer un second axes superposés) et plusieurs légendes peuvent être ajoutées de cette manière. p>

Exemple: P>

%declare figure
hfigure = figure('Color', 'w');

%plot 2 lines (red and blue)
hplot1 = plot(1:10,'r-.x');
hold on;
hplot2 = plot(10:-1:1,'b--o');

%plot legends
hlegend1 = legend(hplot1, 'Data 1', 'Location','East'); %display legend 1
new_handle = copyobj(hlegend1,hfigure);                 %copy legend 1 --> retain
legend(hplot2, 'Data 2', 'Location','West');            %display legend 2


1 commentaires

Cette méthode ne fonctionne pas avec moi (R2016A), pas même lorsque vous utilisez «héritage» comme option.



1
votes

Après avoir effectué la première légende, faites une nouvelle poignée d'axe invisible:

legend(ax,...);


1 commentaires

J'ai essayé cela dans R2016B sans succès: Plot1; ajuster xticks et yticks; nouveaux axes; ...; Les nouvelles tiques et les étiquettes se chevauchent avec les anciens.



1
votes

Exemple pour plusieurs parcelles:

hAx(1) = axes();
hold on
hLine(1) = plot(1:10, 'Parent',hAx(1),'color','b');
hLine(2) = plot(3:15, 'Parent',hAx(1),'color','b', 'linestyle','--');
set(hAx(1), 'Box','off')
legend([hLine(1), hLine(2)],{ 'line' 'line2'})

%# copy the axis
hAx(2) = copyobj(hAx(1),gcf);
delete( get(hAx(2),'Children') )            %# delete its children
hold on
hLine(3) = plot(sin(1:10), 'Color','r','Parent',hAx(2));
hLine(4) = plot(cos(1:10), 'Color','r','linestyle','--','Parent',hAx(2));
hold off
set(hAx(2), 'Color','none', 'XTick',[], ...
'YAxisLocation','right', 'Box','off')   %# make it transparent
legend([hLine(3),hLine(4)], {'sin' , 'cos'}, 'Location','NorthWest', 'Color','w')
%legend(hLine(3), {'sin'}, 'Location','NorthWest', 'Color','w')


1 commentaires

Totalement nonobevieux, mais c'était ce dont j'avais besoin en octave, THX: La légende ([HLINE (3), HLINE (4)], {'sin', 'cos'})