2011-03-10 8 views
12

ejemplo Minimal:Matlab: ¿Cómo alinear los ejes de las subtramas cuando uno de ellos contiene una barra de color?

[x,y,z] = peaks(50); 
figure; 
subplot(5,1,1:4); 
pcolor(x,y,z); 
shading flat; 
colorbar; 
subplot(5,1,5); 
plot(x(end/2,:), z(end/2,:)); 

output

En este ejemplo me gustaría tener la trama secundaria inferior muestran la sección transversal de los picos a lo largo de y = 0 y la trama terminando en la misma posición que la Subtrama pcolor, por lo que los tics x están en posiciones idénticas. De hecho, no necesito el eje x duplicado entonces. Entonces,

¿Cómo volver a escalar la subparcela inferior de manera que el límite derecho coincida con el límite derecho de la parte de la trama superior? (Preferiblemente de tal manera que la barra de colores puede ser encendido/apagado sin destruir esa alineación)

(FYI learned puedo usar el comando linkaxes entonces a tener un comportamiento zoom correcta en un segundo paso)

Respuesta

15

Usted solo puede establecer el ancho de la segunda subparcela al ancho de la primera cambiando la propiedad Position.

[x,y,z] = peaks(50); 
figure; 
ah1 = subplot(5,1,1:4); %# capture handle of first axes 
pcolor(x,y,z); 
shading flat; 
colorbar; 
ah2 = subplot(5,1,5); %# capture handle of second axes 
plot(x(end/2,:), z(end/2,:)); 

%# find current position [x,y,width,height] 
pos2 = get(ah2,'Position'); 
pos1 = get(ah1,'Position'); 

%# set width of second axes equal to first 
pos2(3) = pos1(3); 
set(ah2,'Position',pos2) 

A continuación, puede seguir manipulando sus ejes propiedades, por ejemplo, usted puede dar vuelta de los X-etiquetas en la primera parcela, y mover el segundo de tal manera que se tocan:

set(ah1,'XTickLabel','') 
pos2(2) = pos1(2) - pos2(4); 
set(ah2,'Position',pos2) 

enter image description here

+0

+1 gracias. Lástima que el ancho esté almacenado en la matriz de posiciones, por lo que no se puede usar 'linkprop' para asegurarse de que la trama no se vuelva extraña al ocultar la barra de color de nuevo ... –

Cuestiones relacionadas