2010-08-30 15 views
13

Ho una GUI in MATLAB con un set di assi pre-posizionati. Sto usando la proprietà location della legenda per posizionarla sul lato destro degli assi. Tuttavia, in questo modo gli assi vengono ridimensionati in modo che gli assi + la legenda occupino la larghezza originale degli assi. C'è un modo per aggirare il ridimensionamento?Aggiungi legenda al di fuori degli assi senza ridimensionare in MATLAB

Esempio:

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) 

Finora ottengo:

alt text

Luogo leggenda:

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

... Aaaaand ...

alt text

MATLAB schizza tutto nello spazio degli assi originale. In qualche modo intorno a questo?

risposta

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

Sì, lo so che è fatto automaticamente, ma ho tre serie di assi impilati verticalmente che trama serie di dati separati da un'acquisizione simultanea. Le etichette sono timbri data, quindi ho solo bisogno di una legenda. Il problema è quando aggiungo solo la legenda alla trama centrale, le altre due non si allineano più. Ho uno spazio vuoto alla fine della GUI con spazio sufficiente per la legenda e voglio posizionarlo lì. – Doresoom

+1

puoi sempre impostare manualmente la proprietà 'Posizione' per adattarla al tuo layout – Amro

+0

@Doresoom: Ho aggiunto un esempio usando l'idea sopra. – Amro

Problemi correlati