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:

text alt

La place légende:

legend('sin(x)','location','eastoutside')

... aaaaand ...

text alt

Matlab squishes tout dans l'espace des axes d'origine. De toute façon de contourner cela?

Était-ce utile?

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)])

text alt

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top