Mostrar marcas de división secundarias en Matplotlib

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

Habitualmente en las gráficas solamente se muestran las marcas de división principales, aquellas que se corresponden con un valor que se muestra en el eje, pero las marcas de división secundarias también son de gran ayuda para la lectura e interpretación de los gráficos. Unas marcas que por defecto no se muestran en las figuras creadas con Matplotlib. Veamos los pasos para mostrar marcas de división secundarias en Matplotlib y configurarlas.

Dibujar marcas de división secundarias en Matplotlib

La función para mostrar las marcas de división secundarias en Matplotlib es plt.minorticks_on(). Una función que se debe llamar sin parámetros antes de dibujar la gráfica. Algo similar a lo que se hace en el siguiente código.

import numpy as np
import matplotlib.pyplot as plt

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

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

Con lo que se obtiene una figura como la siguiente.

Nótese que en este caso tanto en el eje x como en el eje y se pueden ver marcas de división secundarias entre las marcas de división principales. Elementos que no se muestran por defecto en las figuras de Matplotlib. Pudiendo ver tres marcas secundarias entre cada una de las principales.

Configuración marcas de división secundarias en Matplotlib

Tanto el tamaño como el color y otras propiedades de las marcas de división secundarias se pueden configurar con la función plt.tick_params(), la misma que se ha visto la semana pasada para configurar las principales. Para que los cambios afecten a las marcas secundarias se tiene que indicar mediante el parámetro which que las opciones se aplican a las secundarias ('minor') o a ambas ('both'). Por defecto las opciones sólo afectan a las principales ('major'). Así para que las marcas de división se muestran dentro en lugar de fuera se puede hacer con el siguiente código.

plt.plot(x, y)
plt.minorticks_on()
plt.tick_params(which="minor", direction='in')
plt.show()

Obteniendo una figura como la que se muestra a continuación.

En este caso, como a la función se ha indicado que los cambios sólo afectan a las marcas secundarias, estas se muestran por dentro mientras que las principales no.

Marcas de división secundarias solamente en un eje

Las marcas de división secundarias se pueden mostrar también solamente en uno de los ejes. Para ello primero se tiene que crear la figura y usar el método set_tick_params() que existe en los ejes y en este asignar a la propiedad bottom el valor de False. Al igual que plt.tick_params() este método funciona por defecto sobre las líneas de división principales, por lo que es necesario usar la propiedad which para indicarle las que se desean borrar. Por ejemplo, en el siguiente código se muestra mostrar las marcas secundarias solamente en el eje y, para lo que se han borrado del eje x.

fig, ax = plt.subplots()

plt.plot(x, y)

ax.minorticks_on()
ax.xaxis.set_tick_params(which='minor', bottom=False)

Código que genera la siguiente figura.

Conclusiones

En esta ocasión se ha visto cómo se pueden mostrar marcas de división secundarias en las gráficas creadas con Matplotlib. Una opción que es de gran ayuda cuando se desea tener una mayor precisión a la hora de leer las figuras.