8. Gráficos en Matlab

8.1.      Gráficas bidimensionales.

La gráfica más útil para los ingenieros es la gráfica x-y. Un conjunto de pares ordenados se usa para identificar puntos sobre una gráfica bidimensional; luego los puntos se conectan con líneas rectas. Los valores de x y y se pueden medir o calcular. Por lo general, a la variable independiente se le da el nombre x y se grafica en el eje x, y la variable dependiente recibe el nombre y y se grafica en el eje y.

8.2.      Gráficos x-y simples.

Una vez definidos los vectores de valores x y valores y, Matlab hace fácil la creación de gráficas. A través de medición, se obtiene un conjunto de datos tiempo contra distancia.

Se pueden almacenar los valores de tiempo en un vector llamado x (el usuario puede definir cualquier nombre conveniente) y los valores de distancia en un vector llamado y:

x = [0:2:18];

y = [0 1.31 2.13 3.29 4.85 5.19 6.19 7.96 8.33 9.17];

Para graficar estos puntos, se usa el comando plot, con x y y como argumentos:

plot(x,y)

Automáticamente se abre una ventana de gráficas, la que Matlab llama Figure 1. En la ilustración 99 se muestra la gráfica resultante.

Ilustración 99. Grafica usando el comando plot(x,y).

8.2.1.     Títulos, etiquetas y retículas.

La buena práctica para graficar, en especial en materias de matemáticas requiere unidades y un título en las gráficas. Los siguientes comandos agregan un título, etiquetas a los ejes x y y, y una retícula de fondo:

               plot(x,y)

title(‘Ejemplo 1’)

xlabel(‘tiempo (segundos)’)

ylabel(‘distancia (metros)’)

grid on

En la ilustración 100 se ve como queda la gráfica ahora con las buenas prácticas del graficado.

Ilustración 100. Gráfico utilizando buenas prácticas de graficado.

En la tabla 20 se resumen los comandos que se utilizan para la creación y diseño de graficas.

Tabla 20. Funciones para la elaboración de gráficas.

FunciónDescripciónEjemplo
plotCrea un grafica de dos dimensiones.plot(x,y)
titleAgrega un título a una gráfica.title(‘Mi gráfico’)
XlabelAgrega una etiqueta al eje x.xlabel(‘Variable x’)
ylabelAgrega una etiqueta al eje y.ylabel(‘Variable y’)
gridAgrega una cuadricula a la gráfica. Con on se activa la cuadrícula. Con off se desactiva la cuadrícula.grid grid on grid off
pausePausa la ejecución del programa.pause
figureAbre una figura, muy útil para llevar un control de las gráficas y en que ventana abrirlas.figure(1) figure(2)
holdPermite seguir creando sobre una figura con gráficas ya en ella. Con on se activa. Con off se desactiva.hold on hold off

Se pueden hacer gráficas con más de una línea. Matlab por defecto borra cualquier plot que no sea el ultimo, es decir el único plot que cuenta es el que se encuentre en la línea más baja. Para evitar esta situación se puede utilizar el comando hold on, este comando localizado después del primer plot y antes de cualquier otro permitirá que se grafiquen todos los plots hasta que aparezca el comando hold off o finalice la ejecución.

Por ejemplo.

%Generas el vector x y el vector y

x = 0:pi/100:3*pi;

y = cos(x*4);

%Grafica los valores

plot(x,y)

%Activas el hold y con ello ya se puede seguir graficando

hold on;

z = 2*sin(x*2);

plot(x,z)

Al final resulta en una figura con doble gráfica como la de la ilustración 101.

Ilustración 101. Doble grafica utilizando el comando plot.

Esta forma da el mismo resultado de la ilustración 101.

Otra forma de crear múltiples líneas en una misma gráfica es ingresar ambas líneas dentro del comando plot.

plot(x, y, x, z)

8.2.2.     Línea, color y estilo de marca.

Con algunos comandos es posible modificar las características de las gráficas. Se pueden seleccionar diferentes estilos para el tipo de línea, tipo de punto o el color.

En la tabla 21 están los modificadores que se pueden utilizar dentro del comando plot.

Tabla 21. Modificadores.

Tipo de línea.Indicador.Tipo de punto.Indicador.Color.Indicador.
SólidaPunto..Azul.b
Punteada:Círculo.OVerde.g
Raya-punto-.marca x.XRojo.r
rayadaMás.+Cian.c
  Estrella.*Magenta.m
  Cuadrado.sAmarillo.y
  Diamante.dNegro.k
  triángulo hacia abajo.   
  triángulo hacia arriba.   
  triángulo hacia izquierda.   
  triángulo hacia derecha.   
  Pentagrama.   
  Hexagrama.   

Si se ejecuta el siguiente código se puede observar las gráficas en la ilustración 102. En esta cada línea tiene un tipo de línea, tipo de punto y color diferente.

x = [0:1:9];

y = [0.13 3.24 8.35 22.46 12.54 5.61 21.70 9.81 21.17 1.18];

plot(x,y,’-.+b’,x,y/2,’:sk’,x,y*2,’–>r’)

Ilustración 102. Grafica con diferentes estilos de línea y punto.

Es posible modificar el escalamiento de las gráficas, para ello se utiliza el comando axis. También es posible agregar distintos textos como ayuda para interpretar la gráfica. Estas funciones se resumen en la tabla 22.

Al agregar los siguientes comandos, se modifica la ilustración 102 para que se agregue información sobre la gráfica.

legend(‘grafica 1’, ‘grafica 2’, ‘grafica 3’)

text(0,25,’Etiqueta ejemplo’)

También se agrega un título, etiquetas y ajustamos un poco los ejes para que no se vea tan apretada la gráfica.

xlabel(‘eje x’)

ylabel(‘eje y’)

title(‘Ejemplo de una gráfica con ejes modificados’)

axis([0,11,-1,50])

Finalmente, resulta en la gráfica de la ilustración 103.

Ilustración 103. Grafica con diferentes líneas puntos y etiquetas.

Tabla 22. Funciones de apoyo para las gráficas.

FunciónDescripción
axis([x0 x1 y0 y1])La entrada del comando axis debe ser un vector de cuatro elementos. Los dos primeros determinan el eje x mientras que los dos últimos determinar el eje y.
legend(‘string1, ‘string2’, etc)Le permite agregar una leyenda a su gráfica. La leyenda muestra un modelo de la línea y menciona la cadena que especificó.
text(x_coordinate, y_coordinate, ‘string’)Le permite agregar un recuadro de texto a la gráfica. El recuadro se coloca en las coordenadas x y y especificadas y contiene el valor de cadena especificado.

8.3.      Subgráficas.

El comando subplot le permite subdividir la ventana en una retícula de m filas y n columnas. La función.

               subplot(m,n,p)

Separa la figura en una matriz m x n. La variable p identifica la ubicación de la ventana donde se dibujará la siguiente gráfica. Por ejemplo, si se usa el comando.

               subplot(2,3,1)

La ventana se divide en dos filas y tres columnas, y la gráfica se dibuja en la parte superior izquierda. Las ventanas se numeran de izquierda a derecha, de arriba abajo. Esto se puede observar en la ilustración 104.

Ilustración 104. Grafica dividida por el comando subplot.

De manera similar, los siguientes comandos dividen la ventana de gráficos en una gráfica superior y una gráfica inferior (ilustración 105).

x = -2*pi: pi/10: 2*pi;

subplot(2,1,1)

plot(x,sin(x))

subplot(2,1,2)

plot(x,cos(x))

Ilustración 105. Dos graficas mostradas gracias al comando subplot.

8.4.      Otros tipos de graficas bidimensionales.

En esta sección se muestran los distintos tipos de gráficos que se pueden usar en Matlab además de las clásicas bidimensionales x-y.

8.5.      Gráficos Polares.

Matlab proporciona capacidades de graficar con coordenadas polares polar (theta, r) genera una gráfica polar del ángulo theta en radianes y distancia radia r. Por ejemplo, el siguiente código genera la gráfica de la ilustración 106.

x = 0:pi/100:pi;

y = cos(x);

polar(x,y)

Ilustración 106. Gráfico polar generado por el comando polar.

8.6.      Gráficas de barras, de pastel e histograma.

En la tabla 23 se explican algunas funciones utilizadas para las gráficas de barra, de pastel e histograma.

Tabla 23. Funciones para gráficas de barra, pastel e histogramas.

FunciónDescripción
bar(x)Cuando x es un vector, bar genera una gráfica de barras vertical. Cuando x es una matriz bidimensional, bar agrupa los datos por fila.
barh(x)Cuando x es un vector, barh genera una gráfica de barras horizontal. Cuando x es una matriz bidimensional, barth agrupa los datos por fila.
bar3(x)Genera una gráfica de barras tridimensional.
bar3h(x)Genera una gráfica de barras horizontal tridimensional.
pie(x)Genera una gráfica de pastel. Cada elemento en la matriz se representa como una rebanada de pastel.
Pie3(x)Genera una gráfica de pastel tridimensional. Cada elemento en la matriz se representa como una rebanada de pastel.
hist(x)Genera un histograma.

Definir el vector Z. Este se utiliza para crear los diferentes tipos de gráficos (usar la función subplot para mostrar las diferentes gráficas en la ilustración 107).

z = [2,5,5,1,4,1,5,3,4];

subplot(3,1,1)

bar(z),title(‘Gráfica de barras’)

subplot(3,1,2)

pie(z),title(‘Gráfica de pastel’)

subplot(3,1,3)

histogram(z),title(‘Histograma’)

Ilustración 107. Gráficos de pastel barras e histogramas con los comandos bar, pie e histograma respectivamente.

8.7.      Gráficas de función.

La función fplot le permite graficar una función sin definir arreglos de valores x y y correspondientes. Por ejemplo, en la ilustración 108.

fplot(@(x) cos(x))

Matlab calcula y crea la función sin necesidad de agregar nada más.

Ilustración 108. Grafica de una función generada por el comando fplot.

8.8.      Gráficas tridimensionales.

Matlab ofrece una variedad de comandos para graficas tridimensionales, muchas de las cuales se mencionan en la tabla 23.

Tabla 24. Funciones para gráficas tridimensionales.

Función.Descripción.
plot3(x,y,z)Crea una gráfica lineal tridimensional.
comet3(x,y,z)Genera una versión animada de plot3.
mesh(z) o mesh(x,y,z)Crea una gráfica de superficie de malla.
surf(z) o surf(x,y,z)Crea una gráfica de superficie; similar a la función mesh.
shading interpInterpola entre los colores usados para ilustrar gráficas de superficie.
shading flatColorea cada sección de retícula con un color sólido.
colormap(map_name)Permite al usuario seleccionar el patrón de color a usar en las gráficas de superficie.
contour(z) o contour(x,y,z)Genera una gráfica de contorno.
surfc(z) o surfc(x,y,z)Crea una gráfica de superficie combinada con una gráfica de contorno.
pcolor(z) o pcolor(x,y,z)Crea una gráfica en pseudocolor.

A continuación, hay varios ejemplos de cómo utilizar las funciones de la tabla anterior.

Para plot3 es necesario ingresar tres vectores del mismo tamaño. El siguiente código genera la gráfica de la ilustración de 109.

t = 0:pi/500:40*pi;

x = (3 + cos(sqrt(32)*t)).*cos(t);

y = sin(sqrt(32) * t);

z = (3 + cos(sqrt(32)*t)).*sin(t);

plot3(x,y,z)

axis equal

xlabel(‘x(t)’)

ylabel(‘y(t)’)

zlabel(‘z(t)’)

Ilustración 109. Gráfica de un vector en 3d.

Para comet3 es similar que plot3, solo que crea una animación de cómo se va creando el grafico. Con el código se abajo se genera la ilustración 110.

[xmat,ymat,zmat] = peaks(100);

x = xmat(:);

y = ymat(:);

z = zmat(:);

comet3(x,y,z)

Ilustración 110. Gráfica en 3d generada por el comando comet3.

Para mesh es similar que plot3, solo que crea un gráfico de malla. Con el código se abajo se genera la ilustración 111.

[X,Y] = meshgrid(1:0.5:10,1:20);

Z = sin(X) + cos(Y);

surf(X,Y,Z)

Ilustración 111. Gráfica empleando el comando meshgrid.

Para surf y surfc también se aplica tres vectores, la diferencia es que surfc crea una gráfica de superficie adicional a la tridimensional. Con el código siguiente se genera la ilustración 112 respectivamente.

[X,Y] = meshgrid(1:0.5:10,1:20);

Z = sin(X) + cos(Y);

surf(X,Y,Z)

[X,Y] = meshgrid(1:0.5:10,1:20);

Z = sin(X) + cos(Y);

surfc(X,Y,Z)

Ilustración 112. Grafica de 3 vectores empleando el comando surf.

Ejercicio 8.8.1. En la siguiente tabla aparecen los nacimientos de hombres y mujeres en la ciudad de México de los años 2009 al 2020. Con estos datos realice un gráfico de barras (código en lustración 113, solución en ilustración 114).

Año.Hombres.Mujeres.
2020828800
20191.0611.030
20181.0981.063
20171.1341.099
20161.1621.131
20151.1921.160
20141.2471.215
20131.2551.223
20121.2621.235
20111.3001.285
20101.3261.317
20091.2961.279
Ilustración 113. Comando para tomar daros de una tabla y graficarlos con el comando bar.
Ilustración 114. Grafica de barras de una tabla de datos de los nacimientos de hombres y mujeres en México de 2009-2020.

Ejercicio 8.8.2. Cree un vector x de valores desde 0 hasta 20π, con un espaciamiento de π/100. Defina los vectores y y z como y = xsen(x) y z=xcos(x) (código en lustración 115, solución en ilustración 116).

  1. Cree una gráfica x-y de x y y.
  2. Cree una gráfica polar de x y y.
  3. Cree una gráfica lineal tridimensional de x, y y z.
  4. Cree una gráfica con el comando comet3 ingresando x, y y z.
Ilustración 115. Código que genera diferentes tipos de graficas con vectores.
Ilustración 116. Grafica de vectores generadas por diferentes comandos.
Publica un comentario

Deja un comentario