una titulo punto marcar leyenda grafica figuras comando color cambiar matlab plot screen fullscreen figure

titulo - ¿Cómo puedo establecer el tamaño de subtrama en la figura de MATLAB?



plot matlab (4)

A menudo necesito trazar 10 imágenes juntas, pero usar este código da como resultado imágenes pequeñas:

img = rand(400,600); for i=1:10 subplot(2,5,i); imshow(img); title([''Image '' int2str(i)]); end

Como puede ver, las imágenes no usan todo el espacio disponible en la pantalla. ¿Cómo puedo aumentar el tamaño o disminuir el relleno / margen entre ellos?

Gracias por cualquier ayuda.


No creo que haya una manera fácil de hacerlo. Hay dos opciones:

Primero, usa la parte de posición de la subparcela:

>> subplot(2,5, i, [l, b, w, h])

y calcule el izquierdo, el inferior, el ancho y la altura.

O bien, obtenga el control del eje devuelto:

>> h(i) = subplot(2,5,i);

y luego modifica el eje después.

>> set(h(1), ''position'', [l, b, w, h] );

Hay varias páginas que darán más detalles, por ejemplo, http://www.briandalessandro.com/blog/how-to-make-a-borderless-subplot-of-images-in-matlab/

[actualizar]

El siguiente código brinda un poco más de detalles sobre quién puede hacer algo como lo que está buscando. Es un poco tedioso El 0.95 y el 0.02 son solo para dar un pequeño relleno. Ellos no son nada mágicos. :-)

Otra cosa a tener en cuenta es que realmente lo alentaría a usar "ii" como su variable de índice (u otra cosa) ya que "i" se define como sqrt (-1). Es una buena convención no usar "i" y "j" como variables de índice (especialmente en Matlab).

img = rand(400,600); figure(1); clf(); hold on; % Get the width and height of the figure lbwh = get(1, ''position''); figw = lbwh(3); figh = lbwh(4); % Number of rows and columns of axes ncols = 5; nrows = 2; % w and h of each axis in normalized units axisw = (1 / ncols) * 0.95 axish = (1 / nrows) * 0.95 for ii=1:10 % calculate the row and column of the subplot row = floor( ii/(ncols+1) ) + 1 col = mod( ii-1, ncols ) + 1 % calculate the left, bottom coordinate of this subplot axisl = (axisw+0.02) * (col-1) axisb = (axish+0.02) * (row-1) % plot the subplot h= subplot(''position'', [axisl, axisb, axisw, axish] ); imshow(img); title([''Image '' int2str(ii)]); pause end

Tendrá que jugar con él para que haga exactamente lo que quiere. Y "ayuda" es tu amigo.


Tengo este requisito a menudo y la forma más eficiente para mí es utilizar la función de subplot_tight de terceros, que es un reemplazo de ranura más o menos para la subplot . En su forma más simple puedes hacer

figure(1); clf subplot_tight(1,2,1, [0.05 0.05]) %normal plot stuff

donde los dos parámetros en el cuarto argumento controlan la fracción de espacio visible alrededor de la imagen.


Según la respuesta de @brechmos, cuando el número de su subtrama es más de 10 subtramas, su código generará un error.

% calculate the row and column of the subplot row = floor( ii/(ncols+1) ) + 1 col = mod( ii-1, ncols ) + 1

por ejemplo, células 4X5, entonces la subparcela 11 se interpretará erróneamente como (2, 1), pero no (3,1).

Reemplazarlo con el código a continuación puede solucionarlo:

% calculate current row and column of the subplot row = floor( (i-0.5)/ncols ) + 1; col = mod(i-(row-1)*ncols, ncols+1);


Puede usar la opción de propiedades de la figura una vez que genere la trama. Haga clic en la subtrama que desea cambiar de tamaño. Desde el editor de propiedades, seleccione la opción ''más propiedades''. Allí si se desplaza verá la pestaña ''Posición''. Puede cambiar esos valores para ver cómo se mueve la subtrama y así ajustar la subparcela según su preferencia.