Frage

Ich habe eine GUI in MATLAB bekommt mit einem Satz von Achsen vorplatzierte. Ich verwende die Lage Eigenschaft der Legende auf der rechten Seite der Achsen zu platzieren. Doch durch diese Weise der Achsen bekommen wieder skaliert, so dass die Achsen + Legende die ursprüngliche Breite der Achsen aufzunehmen. Gibt es eine Möglichkeit, die Größe neu zu umgehen?

Beispiel:

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)

So weit ich komme:

alt text

Ort Legende:

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

... uuuuund ...

alt text

MATLAB zermatscht sie alle in den ursprünglichen Achsen Raum. Jede Art und Weise um dieses?

War es hilfreich?

Lösung

Bearbeiten

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

alt text

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top