In Legende außerhalb der Achsen ohne MATLAB rescaling in
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:
Ort Legende:
legend('sin(x)','location','eastoutside')
... uuuuund ...
MATLAB zermatscht sie alle in den ursprünglichen Achsen Raum. Jede Art und Weise um dieses?
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)])
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow