Ajouter la légende en dehors des axes sans changement d'échelle dans Matlab
Question
J'ai une interface graphique en Matlab avec un ensemble d'axes préplacés. J'utilise la propriété de l'emplacement de la légende pour le placer sur le côté droit des axes. Cependant, en faisant cela, les axes se rééchelonné de telle sorte que les axes + légende prennent la largeur d'origine des axes. Est-il un moyen de contourner la nouvelle taille?
Exemple:
x=0:.1:10;
y=sin(x);
figure
pos=get(gca,'position');
pos(3)=.5; %#re-size axes to leave room for legend
set(gca,'position',pos)
plot(x,y)
Jusqu'à présent, je reçois:
La place légende:
legend('sin(x)','location','eastoutside')
... aaaaand ...
Matlab squishes tout dans l'espace des axes d'origine. De toute façon de contourner cela?
La solution
EDIT
%# create three axes with custom position
x=0:.1:10;
y=sin(x);
hAx1 = axes('Position',[0.05 0.05 0.7 0.2]); plot(hAx1, x,y)
hAx2 = axes('Position',[0.05 0.4 0.7 0.2]); plot(hAx2, x,y)
hAx3 = axes('Position',[0.05 0.75 0.7 0.2]); plot(hAx3, x,y)
%# add legend to middle one
h = legend(hAx2, 'sin(x)'); pos = get(h,'position');
set(h, 'position',[0.8 0.5 pos(3:4)])
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow