martes, 5 de julio de 2016

Graficar en Matlab


Para graficar una variable en Matlab basta de las siguientes líneas:

clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=rand(1,1000); %se genera una variable en forma de vector de nombre "n" de tamaño 1x1000 con elementos random (entre 0 y 1)
figure() %se genera una ventana para una figura

plot(m) %se grafica la variable m con la función plot

Ejecutando el código anterior se obtiene la siguiente ventana

Si se desea guardar la imagen basta con ir al menú File y seleccionar Save as, aparecerá la ventana para indicar donde guardarla y en que formato. Si se desea tener la gráfica y editarla posteriormente la mejor opción es con extensión .fig. Otro formato interesante es con la extensión .eps con la cual se puede trabajar en Latex (ver )


Si solo se desea copiar al portapapeles
Se abre el menú Edit y se elige Copy figure, por ejemplo para usarla en Word.

Dar nombre a los ejes X y Y
Para dar nombre a los ejes X y Y se utiliza el comando xlabel y ylabel respectivamente como se muestra a continuación:

clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=rand(1,1000); %se genera una variable en forma de vector de nombre "n" de tamaño 1x1000 con elementos aleatorios (entre 0 y 1)
figure() %se genera una ventana para una figura
plot(m) %se grafica la variable m con la función plot
xlabel('Título para el eje X')%nombrar el eje x

ylabel('Título para el eje Y')%nombrar el eje y


Título de la gráfica
Para dar título a la gráfica se utiliza la función title, a continuación se describe:

clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=rand(1,1000); %se genera una variable en forma de vector de nombre "n" de tamaño 1x1000 con elementos random (entre 0 y 1)
figure() %se genera una ventana para una figura
plot(m) %se grafica la variable m con la función plot
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica

Leyenda a la gráfica

La leyenda de lo que se grafica se crea con legend, a continuación se describe:

clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=rand(1,1000); %se genera una variable en forma de vector de nombre "n" de tamaño 1x1000 con elementos random (entre 0 y 1)
figure() %se genera una ventana para una figura
plot(m) %se grafica la variable m con la función plot
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica
legend('m')%leyenda para lo que se grafica

 
Grosor, forma y color de la lineas
Para cambiar el color se debe de agregar la letra que pertenece a cada uno de los colores disponibles en la función plot, por default se tiene al colo azul, a continuación se escribe la letra perteneciente a cada color.
b     blue      
g     green      
r     red       
c     cyan    
m     magenta 
y     yellow       
k     black
w     white     

Formas para graficar cada punto en la gráfica:

.     point-punto             
o     circle-círculo            
x     x-mark- marca en forma de x           
+     plus-símbolo de suma               
*     star-asterísco            
s     square-cuadrado
d     diamond-rombo
v     triangle (down)-triángulo hacia abajo
^     triangle (up)-triángulo hacia arriba
<     triangle (left)--triángulo hacia la izquierda
>     triangle (right)--triángulo hacia la derecha
p     pentagram-pentagrama
h     hexagram-hexagrama
 -     solid-línea sólida
 :     dotted-línea punteada
  -.    dashdot-guión y punto
--    dashed-línea discontínua   
 (none)  no line-sin línea

El grosor de la línea se modifica con 'linewidth' dentro de plot seguido de coma y el grosor en forma numérica, en el siguiente ejemplo se grafica con color rojo, utilizando círculos y con un grosor de 3.

clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=rand(1,1000); %se genera una variable en forma de vector de nombre "n" de tamaño 1x1000 con elementos random (entre 0 y 1)
figure() %se genera una ventana para una figura
plot(m,'ro','linewidth',3) %se grafica la variable m con la función plot, en color rojo, utilizando círculos y con un grosor de 3
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica

legend('m')%leyenda para lo que se grafica




El uso de círculos para graficar la variable m no fue muy conveniente en esta caso, para verlo mejor se graficará la función seno de los valores de m.

clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=1:10:360; %se genera una variable en forma de vector de nombre "n" de tamaño 1x36 con elementos random (inicia en 1 e incrementa de 10 en 10)
n=sind(m);% función seno de los valores de m
figure() %se genera una ventana para una figura
plot(n,'ro','linewidth',3) %se grafica la variable n con la función plot, en color rojo, utilizando círculos y con un grosor de 3
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica

legend('seno de m')%leyenda para lo que se grafica

 Otro configuración importante es el tamaño del marcador a utilizar , para ello se escribe dentro de plot 'markersize' seguido de una coma y el tamaño del marcador en forma numérica, enseguida se presenta un ejemplo:


clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=1:10:360; %se genera una variable en forma de vector de nombre "n" de tamaño 1x36 con elementos random (inicia en 1 e incrementa de 10 en 10)
n=sind(m);% función seno de los valores de m
figure() %se genera una ventana para una figura
plot(n,'ro','linewidth',3,'markersize',10) %se grafica la variable n con la función plot, en color rojo, utilizando círculos, con un grosor de línea 3 y con un marcador de tamaño 10
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica
legend('seno de m')%leyenda para lo que se grafica

Graficar simultáneamente dos variables
Para ello se grafica la primera variable, se escribe hold on y se grafica la siguiente variable, en el siguiente caso se graficará la función coseno y seno de los valores de m, debe de quedar claro que se debe de especificar la legenda, tamaño, forma y color para la variable:

clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=1:10:360; %se genera una variable en forma de vector de nombre "n" de tamaño 1x36 con elementos random (inicia en 1 e incrementa de 10 en 10)
n=sind(m);% función seno de los valores de m
o=cosd(m);% función coseno de los valores de m
figure() %se genera una ventana para una figura
plot(n,'ro','linewidth',3,'markersize',10) %se grafica la variable n con la función plot, en color rojo, utilizando círculos y con un grosor de 3
hold on
plot(o,'m+','linewidth',3,'markersize',10) %se grafica la variable o con la función plot, en color magenta, utilizando símbolos de suma y con un grosor de 3
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica

legend('seno de m','coseno de m')%leyenda para lo que se grafica


Función subplot
Si se desea tener las dos gráficas separadas pero en una misma ventana se utiliza la función subplot. Se escribe subplot, seguido de paréntesis donde se especifican las gráficas por ventana y la posición. Por ejemplo subplot(221) quiere decir que la ventana se formará por dos renglones ,dos columnas y el uno  indica la posición sobre la cual se graficará. Por lo tanto se tendrán cuatro gráficas en una misma ventana numeradas del 1 al 4.

clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=1:10:360; %se genera una variable en forma de vector de nombre "n" de tamaño 1x36 con elementos random (inicia en 1 e incrementa de 10 en 10)
n=sind(m);% función seno de los valores de m
o=cosd(m);% función coseno de los valores de m
figure() %se genera una ventana para una figura
subplot(221)
plot(n,'ro','linewidth',3,'markersize',10) %se grafica la variable n con la función plot, en color rojo, utilizando círculos y con un grosor de 3
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica
legend('seno de m')%leyenda para lo que se grafica
subplot(222)
plot(o,'m.-','linewidth',3,'markersize',10) %se grafica la variable o con la función plot, en color magenta, utilizando símbolos de suma y con un grosor de 3
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica
legend('coseno de m')%leyenda para lo que se grafica
subplot(223)
plot(n,'b:','linewidth',3,'markersize',10) %se grafica la variable n con la función plot, en color rojo, utilizando círculos y con un grosor de 3
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica
legend('seno de m')%leyenda para lo que se grafica
subplot(224)
plot(o,'g+','linewidth',3,'markersize',10) %se grafica la variable o con la función plot, en color magenta, utilizando símbolos de suma y con un grosor de 3
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica
legend('coseno de m')%leyenda para lo que se grafica

  
Se pueden realizar alguna modificaciones al subplot para organizar las gráficas en la ventana, por ejemplo se requieren tres gráficas en una misma ventana, dos en la parte superior y una en la parte inferior, el código se describe a continuación:
clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=1:10:360; %se genera una variable en forma de vector de nombre "n" de tamaño 1x36 con elementos random (inicia en 1 e incrementa de 10 en 10)
n=sind(m);% función seno de los valores de m
o=cosd(m);% función coseno de los valores de m
figure() %se genera una ventana para una figura
subplot(221)%dos renglones, dos columnas, posición 1
plot(n,'ro','linewidth',3,'markersize',10) %se grafica la variable n con la función plot, en color rojo, utilizando círculos y con un grosor de 3
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica
legend('seno de m')%leyenda para lo que se grafica
subplot(222)%dos renglones, dos columnas, posición 2
plot(o,'m.-','linewidth',3,'markersize',10) %se grafica la variable o con la función plot, en color magenta, utilizando símbolos de suma y con un grosor de 3
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica
legend('coseno de m')%leyenda para lo que se grafica
subplot(212)%se modifica el subplot pero solo se afectará al renglón dos, por lo tanto la gráfica abarcará la parte inferior
plot(n,'b:','linewidth',3,'markersize',10) %se grafica la variable n con la función plot, en color rojo, utilizando círculos y con un grosor de 3
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica
legend('seno de m')%leyenda para lo que se grafica



Si se desea visualizar mejor los ejes y título de la gráfica se aumenta el tamaño de letra y tipo mediante  'Fontsize',seguido de un valor numérico y de 'FontWeight',seguido del tipo de letra, por ejemplo 'bold' .

clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=1:10:360; %se genera una variable en forma de vector de nombre "n" de tamaño 1x36 con elementos random (inicia en 1 e incrementa de 10 en 10)
n=sind(m);% función seno de los valores de m
o=cosd(m);% función coseno de los valores de m
figure() %se genera una ventana para una figura
subplot(221)%dos renglones, dos columnas, posición 1
plot(n,'ro','linewidth',3,'markersize',10) %se grafica la variable n con la función plot, en color rojo, utilizando círculos y con un grosor de 3
xlabel('Título para el eje X','Fontsize',12,'FontWeight','bold')%nombrar el eje x
ylabel('Título para el eje Y','Fontsize',12,'FontWeight','bold')%nombrar el eje y
title('Título para gráfica','Fontsize',12,'FontWeight','bold')% darle título  a la gráfica
legend('seno de m')%leyenda para lo que se grafica

subplot(222)%dos renglones, dos columnas, posición 2
plot(o,'m.-','linewidth',3,'markersize',10) %se grafica la variable o con la función plot, en color magenta, utilizando símbolos de suma y con un grosor de 3
xlabel('Título para el eje X','Fontsize',12,'FontWeight','bold')%nombrar el eje x
ylabel('Título para el eje Y','Fontsize',12,'FontWeight','bold')%nombrar el eje y
title('Título para gráfica','Fontsize',12,'FontWeight','bold')% darle título  a la gráfica
legend('coseno de m')%leyenda para lo que se grafica

subplot(212)%se modifica el subplot pero solo se afectará al renglón dos, por lo tanto la gráfica abarcará la parte inferior
plot(n,'b:','linewidth',3,'markersize',10) %se grafica la variable n con la función plot, en color rojo, utilizando círculos y con un grosor de 3
xlabel('Título para el eje X','Fontsize',12,'FontWeight','bold')%nombrar el eje x
ylabel('Título para el eje Y','Fontsize',12,'FontWeight','bold')%nombrar el eje y
title('Título para gráfica','Fontsize',12,'FontWeight','bold')% darle título  a la gráfica

legend('seno de m')%leyenda para lo que se grafica

Para modificar los números de los ejes se modifica el gca mediante el código siguiente:
set(gca,'Fontsize',12,'FontWeight','bold')

Empleado en las gráficas es de la siguiente manera:

clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=1:10:360; %se genera una variable en forma de vector de nombre "n" de tamaño 1x36 con elementos random (inicia en 1 e incrementa de 10 en 10)
n=sind(m);% función seno de los valores de m
o=cosd(m);% función coseno de los valores de m
figure() %se genera una ventana para una figura
subplot(221)%dos renglones, dos columnas, posición 1
plot(n,'ro','linewidth',3,'markersize',10) %se grafica la variable n con la función plot, en color rojo, utilizando círculos y con un grosor de 3
xlabel('Título para el eje X','Fontsize',12,'FontWeight','bold')%nombrar el eje x
ylabel('Título para el eje Y','Fontsize',12,'FontWeight','bold')%nombrar el eje y
title('Título para gráfica','Fontsize',12,'FontWeight','bold')% darle título  a la gráfica
legend('seno de m')%leyenda para lo que se grafica
set(gca,'Fontsize',12,'FontWeight','bold')
subplot(222)%dos renglones, dos columnas, posición 2
plot(o,'m.-','linewidth',3,'markersize',10) %se grafica la variable o con la función plot, en color magenta, utilizando símbolos de suma y con un grosor de 3
xlabel('Título para el eje X','Fontsize',12,'FontWeight','bold')%nombrar el eje x
ylabel('Título para el eje Y','Fontsize',12,'FontWeight','bold')%nombrar el eje y
title('Título para gráfica','Fontsize',12,'FontWeight','bold')% darle título  a la gráfica
legend('coseno de m')%leyenda para lo que se grafica
set(gca,'Fontsize',12,'FontWeight','bold')
subplot(212)%se modifica el subplot pero solo se afectará al renglón dos, por lo tanto la gráfica abarcará la parte inferior
plot(n,'b:','linewidth',3,'markersize',10) %se grafica la variable n con la función plot, en color rojo, utilizando círculos y con un grosor de 3
xlabel('Título para el eje X','Fontsize',12,'FontWeight','bold')%nombrar el eje x
ylabel('Título para el eje Y','Fontsize',12,'FontWeight','bold')%nombrar el eje y
title('Título para gráfica','Fontsize',12,'FontWeight','bold')% darle título  a la gráfica
legend('seno de m')%leyenda para lo que se grafica
set(gca,'Fontsize',12,'FontWeight','bold')

Por último, si no deseas agregar código puedes generar tu gráfica y editarla con el editor de Matlab




Donde es posible editar las fuentes, colores, formas y demás.

1 comentario: