2010-08-30 8 views
13

Ich habe eine GUI in MATLAB mit einer Reihe von Achsen, die vorgelagert sind. Ich verwende die Standorteigenschaft der Legende, um sie auf der rechten Seite der Achsen zu platzieren. Dabei werden die Achsen jedoch so skaliert, dass die Achsen + Legende die ursprüngliche Breite der Achsen einnehmen. Gibt es eine Möglichkeit, die Neugröße zu umgehen?Hinzufügen von Legenden außerhalb von Achsen ohne Neuskalierung in MATLAB

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

Platz Legende:

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

... uuuuund ...

alt text

MATLAB zerquetscht alles in den ursprünglichen Achsenraum. Irgendwie in der Nähe?

Antwort

8

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

alt text

+0

Ja, ich weiß, dass es automatisch erledigt ist, aber ich habe drei Sätze von Achsen vertikal gestapelt, welche Plot getrennte Datensätze aus einer gleichzeitigen Aquisition. Die Etiketten sind Datumsstempel, also brauche ich nur eine Legende. Das Problem ist, wenn ich die Legende nur zum mittleren Plot hinzufüge, die anderen beiden nicht mehr. Ich habe am Ende der GUI ein Leerzeichen mit genug Platz für die Legende, und ich möchte es dort platzieren. – Doresoom

+1

Sie können die Eigenschaft 'Position' immer manuell an Ihr Layout anpassen – Amro

+0

@Doresoom: Ich habe ein Beispiel mit der obigen Idee hinzugefügt. – Amro

Verwandte Themen