Revista Informática

Incluir líneas de división en Matplotlib

Publicado el 21 julio 2022 por Daniel Rodríguez @analyticslane

Las gráficas que cuentan con líneas de división generalmente son más fáciles de leer, especialmente cuando se necesita comprender de una manera precisa la relación existente entre los diferentes valores que se muestran. Por eso incluir este elemento puede ser de gran ayuda. Incluir líneas de división en Matplotlib no es una tarea compleja, pero es necesario conocer las principales opciones existentes.

Agregar una línea de división a una gráfica de Matplotlib

A modo de ejemplo, para ver el funcionamiento de las líneas de división en Matplotlib, se puede crear una gráfica sencilla como puede ser un coseno. Por ejemplo, con el siguiente código.

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 1, 100)
y = np.cos(1.5 * np.pi * x)

plt.plot(x, y)
plt.show()

Con lo que se obtiene como resultado la siguiente figura.

Ahora si se desea agregar líneas de división a la figura solamente se tienen que usar la función grid() de pyplot antes de dibujar la gráfica. Como se hace en el siguiente código

plt.plot(x, y)
plt.grid()
plt.show()

Obteniendo como resultado la siguiente figura en la que se puede apreciar unas líneas de división básicas.

Opciones de grid()

En el caso de que no sean de nuestro agrado las líneas de división de la gráfica, se puede modificar la forma de estas mediante las opciones que ofrece la función grid(). Algunas de las opciones más importantes son:

  • color: cambia el color de las líneas de división, pudiéndose usar los códigos de los colores que se usan habitualmente en Matplotlib.
  • linestyle: modifica el estilo de la línea, por defecto es sólido, pero es posible usar líneas de puntos, puntos y líneas o líneas discontinuas.
  • linewidth: altera el ancho de la línea que se muestra en la gráfica. El valor por defecto es 1 y el valor que se indica es cuanto mayor o menor será la línea que se dibuje.
  • axis: selecciona el eje de la gráfica en la que se muestran las líneas de división. Por defecto se muestra en ambas, pero se puede indicar 'x' o 'y' para seleccionar el eje.
  • which: permite indicar si las líneas se muestran en las marcas de división principales ('major'), en las secundarias ('minor') o en ambas ('both'), siendo la opción por defecto sólo las principales.

Cambiando el color y formato de las líneas de división en Matplotlib

Quizás la opción más usada será cambiar el color y el formato de las líneas de división. Algo que se puede hacer como en el siguiente ejemplo donde se usa el color verde, en unas líneas de división discontinuas de ancho 2.

plt.plot(x, y)
plt.grid(color='g', linestyle='--', linewidth=2)
plt.show()

Lo que genera la siguiente gráfica

Líneas de división solamente en uno de los ejes

Otra opción habitual es incluir solamente las líneas de división en un eje. Lo que se puede hacer indicando el eje mediante la propiedad axis, cómo se hace en el siguiente ejemplo donde las líneas solamente se muestran en el eje y.

plt.plot(x, y)
plt.grid(axis='y')
plt.show()

Obteniendo la siguiente figura al ejecutar el código.

Incluir líneas de división en las marcas de divisiones secundarias

Si se desea incluir líneas de división en las marcas de división secundaria de una gráfica en primer lugar es necesario incluir estas marcas. Lo que se puede conseguir ejecutando la función minorticks_on(), lo que se ha explicado la semana pasada. Además de esto, también se tiene que indicar mediante la propiedad which que se desee incluir en ambas, para lo que se usará el valor 'both', o solamente en las secundarias, mediante el valor 'minor'. Por ejemplo, tal como se muestra en el siguiente ejemplo donde se muestran ambas.

plt.plot(x, y)
plt.minorticks_on()
plt.grid(which='both')
plt.show()

Lo que produce el siguiente resultado.

Conclusiones

En esta entrada se ha visto cómo se puede agregar fácilmente líneas de división en Matplotlib a las figuras. Una opción que ayuda a leer los datos y, por lo tanto, facilita su interpretación.


Volver a la Portada de Logo Paperblog