Matlab - margenes con subplot en matlab

 
Vista:
sin imagen de perfil
Val: 18
Ha aumentado 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

margenes con subplot en matlab

Publicado por Jacqueline (52 intervenciones) el 02/07/2015 19:09:03
Estimados

Junto con saludarlos, tengo el sgte problema

Deseo hacer unos mapas en matlab con subplot, pero cuando sale la imagen el espacio entre ellas es muy grande, como puedo reducir los espacios?

Espero que me puedan ayudar

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Daniel
Val: 269
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

margenes con subplot en matlab

Publicado por Daniel (264 intervenciones) el 03/07/2015 17:18:20
Podes definir los recuadros de la manera explicita por coordenadas, te dejo un codigo para generar subplot de "a" filas por "b" columnas en donde podes especificar la separación horizontal "mx" y vertical "my", luego para representar en un recuadro especifico debes poner plot(eje(i,j),x,y)

aquí te dejo el código

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
clc
clear all
 
% parametros a modificables
a=3; % filas del subplot
b=5; % columnas del subplot
mx=.01; % espaciado horizontal
my=.02; % espaciado vertical
 
% calculos
tx=1-(a+1)*mx;
ty=1-(b+1)*my;
 
% generación de los ejes
for vx=1:a
    for vy=1:b
eje(vy,vx)=axes('Position',[vx*mx+(vx-1)*tx/a,1-vy*(ty/b+my),tx/a,ty/b]);
% la linea siguiente se puede comentar
set(eje(vy,vx),'visible','off') % no los muestra hasta que grafiques algo en el recuadro correspondiente
    end
end
 
% ejemplo de plot en el recuadro de la fila 3 y columna 2 
plot(eje(3,2),1:10,(1:10).^2)


Espero que sirva

comenta después como te fue

Saludos

Daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Etiquetas titulo,etc

Publicado por Joana Julieta (1 intervención) el 29/07/2016 05:14:40
Hola
me funciono muy bien tu solucion solo que ahora no entiendo como poner etiquetas a cada eje, los titulos, barra de color, etc....
Alguien puede ayudarme?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Daniel
Val: 269
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Etiquetas titulo,etc

Publicado por Daniel (264 intervenciones) el 29/07/2016 19:20:49
Tienes varias maneras según silos quieres pones mientras los vas creando o luego de ello.

Si lo quieres agregar mientras los vas creando deberías agregar en el "for" cada plot y su las lineas referidas al formato:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for vx=1:a
    for vy=1:b
        eje(vy,vx)=axes('Position',[vx*mx+(vx-1)*tx/a,1-vy*(ty/b+my),tx/a,ty/b]);
        % la linea siguiente se puede comentar
        set(eje(vy,vx),'visible','off') % no los muestra hasta que grafiques algo en el recuadro correspondiente
 
        % plot
        plot(-5:5,(vx*vy)*rand(1,11)+(-5:5).^2,'.')
 
        % formato de los plots
        title('X vs. t')
        xlabel('Tiempo (s)')
        ylabel('Posicion (m)')
        colorbar
 
    end
end


En caso contrario tienes dos opciones a su vez:

opcion 1: si realizas un plot en una posicion especifica, por ejemplo
1
plot(eje(3,2),1:10,(1:10).^2)

puedes agregar a continuación las lineas referidas al formato de ese plot particular

1
2
3
4
5
% formato de los plots
        title('X vs. t')
        xlabel('Tiempo (s)')
        ylabel('Posicion (m)')
        colorbar

(cuando tienes varios plots el ultimo en que graficas queda activo con lo cual no es necesario especificar nuevamente a que plot te refieres)

Si en cambio

opcion 2: Haz realizado todos los plots y ahora quieres poner los formatos de los plots, debes entonces especificar a que plot asignarlos

1
2
3
4
title(eje(2,2),'X vs. t')
xlabel(eje(2,2),'Tiempo (s)')
ylabel(eje(2,2),'Posicion (m)')
colorbar('peer',eje(2,2))

Espero sea de ayuda

Saludos
Daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar