2010-08-30 26 views
13

J'ai une interface graphique dans MATLAB avec un ensemble d'axes pré-placés. J'utilise la propriété location de la légende pour la placer sur le côté droit des axes. Cependant, en faisant cela, les axes sont redimensionnés de sorte que les axes + légende prennent la largeur d'origine des axes. Y at-il un moyen de contourner la re-taille?Ajouter une légende en dehors des axes sans redimensionnement dans MATLAB

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:

alt text

Lieu légende:

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

... aaaaand ...

alt text

MATLAB écrase tout dans l'espace des axes d'origine. De toute façon autour de cela?

Répondre

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

Oui, je sais que ça fait automatiquement, mais j'ai trois ensembles d'axes empilés verticalement qui intrigue ensembles de données séparés d'une aquisition simultanée. Les étiquettes sont des tampons de date, donc j'ai seulement besoin d'une légende. Le problème est que lorsque j'ajoute seulement la légende à l'intrigue centrale, les deux autres ne s'alignent plus. J'ai un blanc à la fin de l'interface graphique avec assez de place pour la légende, et je veux le placer là. – Doresoom

+1

vous pouvez toujours définir manuellement sa propriété 'Position' pour l'adapter à votre disposition – Amro

+0

@Doresoom: J'ai ajouté un exemple en utilisant l'idée ci-dessus. – Amro