Personalizar las marcas de división en Matplotlib

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

Las figuras creadas con Matplotlib generalmente contienen marcas de división en los ejes, ya que son una excelente ayuda para interpretar correctamente los datos que se muestran. Aunque la configuración por defecto suele ser una buena opción, puede que no sea la más adecuada para nuestras necesidades. Veamos cómo se pueden personalizar las marcas de división en Matplotlib.

Marcas de división en Matplotlib

Antes de ver las opciones que existen para personalizar las marcas de división en Matplotlib es bueno ver cómo son las que se muestran por defecto. Algo que se puede hacer ejecutando un código como el siguiente.

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()

Lo que produce como resultado la siguiente figura.

En esta figura se puede ver que las marcas de división están por fuera de la figura y son del mismo color y tamaño que el cuadro de la figura.

Opciones configuración para las marcas de división

La configuración de las marcas de división en Matplotlib se realiza mediante la función plt.tick_params() a la que se le debe indicar los parámetros de configuración. Función que se debe llamar antes de dibujar la figura. Los principales parámetros que admite esta función son:

  • axis: el eje al que se le aplican los cambios, por defecto es a ambos ('both') pero se puede seleccionar solamente uno de ellos.
  • direction: la dirección en la que se muestran las marcas, por defecto es hacia fuera ('out'), pero se pueden mostrar hacia dentro ('in') o en ambas ('inout').
  • length: la longitud de la marca también se puede modificar mediante este parámetro que admite valores reales.
  • width: el acto es otra opción que se también se puede cambiar, para lo que se debe indicar el un valor real en este parámetro.
  • color: el color es otra opción que se puede modificar asignado el código del color a este parámetro.
  • labelrotation: la rotación de las etiquetas del eje permite que se puedan ver mejor cuando estas son grandes, para ello solamente se tienen que indicar lo grados que se desea rotar en este parámetro.

Hacer que las marcas de división se muestran dentro

En el caso de que prefiramos que las marcas de división se muestran dentro de la figura en lugar de fuera tiene fácil solución. Para esto, antes de dibujar la figura, solamente se tiene que llamar la función plt.tick_params() asignando al parámetro direction con la opción 'in'. Tal como se hace en el siguiente código

plt.plot(x, y)
plt.tick_params(direction='in')
plt.show()

Lo que produce la siguiente gráfica.

Personalizar los ejes por separado

La configuración de cada uno de los ejes de la figura no tiene por qué ser la misma, se pueden aplicar diferentes opciones a cada uno. Para ello se tiene que llamar la función plt.tick_params() más de una vez indicando en cada momento el eje al que se desea aplicar la configuración. Algo similar a lo que se hace en el siguiente código.

plt.plot(x, y)
plt.tick_params(axis="x", length=6, width=2, colors='r', labelrotation=45.0)
plt.tick_params(axis="y", length=3, width=4, colors='b')
plt.show()

En el ejemplo anterior se ha indica que para el eje x la longitud de las marcas debe ser 6, con un ancho de 2, de color rojo y con las etiquetas rotadas 45 grados. Por otro lado, para el eje y la longitud de las etiquetas es de 6, mientras que el ancho es de 4 y el color es azul. Al ejecutar el código se crea la siguiente gráfica.

Conclusiones

En esta entrada se ha visto cómo se pueden configurar las marcas de división en Matplotlib para que estas se adapten mejor a lo que necesitamos en cada momento. No se han visto todas la opciones de la función plt.tick_params(), el resto de opciones se puede consultar en la documentación de la función, pero este subconjunto es uno de los más utilizados.