2010-08-30 17 views
13

Tengo una GUI en MATLAB con un conjunto de ejes colocados previamente. Estoy usando la propiedad de ubicación de la leyenda para colocarla en el lado derecho de los ejes. Sin embargo, al hacer esto, los ejes se cambian de escala para que los ejes + leyenda ocupen el ancho original de los ejes. ¿Hay alguna forma de eludir el cambio de tamaño?Añadir leyenda fuera de los ejes sin reescalar en MATLAB

Ejemplo:

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) 

Hasta ahora me sale: la leyenda

alt text

Lugar:

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

... aaaaand ...

alt text

MATLAB lo coloca todo en el espacio original de los ejes. De cualquier forma alrededor de esto?

Respuesta

8

EDITAR

%# 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í, sé que se realiza de forma automática, pero tengo tres conjuntos de ejes apilados en vertical parcela por separado los datos de una adquisición simultánea. Las etiquetas son sellos de fecha, así que solo necesito una leyenda. El problema es cuando solo agrego la leyenda a la gráfica central, las otras dos ya no se alinean. Tengo un espacio en blanco al final de la GUI con suficiente espacio para la leyenda, y quiero ubicarlo allí. – Doresoom

+1

siempre puede establecer manualmente su propiedad 'Posición' para que se ajuste a su diseño – Amro

+0

@Doresoom: Agregué un ejemplo usando la idea anterior. – Amro

Cuestiones relacionadas