Uso de LaTeX en Matplotlib

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

Cuando es necesario incluir ecuaciones u otros símbolos matemáticos en los cuadernos de Jupyter lo habitual es usar las expresiones de LaTeX. Algo que también se puede usar en las figuras de Matplotlib. Aunque su uso es algo más complicado, a diferencia de Jupyter, para poder usar LaTeX en Matplotlib es necesario tener instalado previamente una distribución de este sistema de composición de textos para generar los mensajes.

Instalación de una distribución de LaTeX

En el caso de que deseemos incluir anotaciones con LaTeX dentro de una figura de Matplotlib es necesario tener instalado el sistema en nuestro equipo. En el caso de Windows una de las más populares y fáciles de instalar es MiKTeX. Mientras que para los usuarios de macOS una de las distribuciones más sencillas de instalar es MacTeX. En ambos casos solamente se tiene que bajar el instalador y seguir los pasos del asistente.

Los usuarios de Linux lo tienen más fácil ya que LaTeX es una herramienta que se pueden encontrar dentro de la mayoría de las distribuciones.

Incluir anotaciones con LaTeX en Matplotlib

En un sistema en el que se encuentre LaTeX instalado solamente hay que realizar una pequeña configuración para que Matplotlib lo utilice. Se tiene que fijar la propiedad de text.usetex del objeto matplotlib.RcParams a verdadero. Con esto, todas las cadenas de texto de las anotaciones, etiquetas y títulos se evaluarán con LaTeX, pudiéndose incluir en las mismas tanto ecuaciones como otros símbolos.

Por ejemplo, en el siguiente ejemplo se muestra una señal y se usa LaTeX para generar las etiquetas de ambos ejes como para incluir una ecuación en el título.

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['text.usetex'] = True

x = np.linspace(0, np.pi, 100)
y = np.cos(3 * np.pi * x / 2)

plt.plot(x, y)
plt.xlabel(r'\textbf{Tiempo (ms)}')
plt.ylabel(r'\textbf{Amplitud $(\mu V)$}')
plt.title(r'Señal $\sin \left(\frac{3 \pi}{2} x \right)$', fontsize=18)
plt.show()

Obteniendo como resultado la siguiente figura.

Figura creada con Matplotlib en la que se usa LaTeX

Opciones para los textos

No solamente se puede activar el uso de LaTeX en Matplotlib mediante el objeto matplotlib.RcParams, también es posible fijar otras opciones como la fuente. Así para cambiar la fuente a Palatino se puede usar la siguiente opción

plt.rcParams.update({
    "text.usetex": True,
    "font.family": "serif",
    "font.serif": ["Palatino"],
})

Con lo que la figura del ejemplo anterior quedaría de la siguiente manera.

Figura creada con Matplotlib en la que se usa LaTeX en la que se usa la fuente Palatino

Pudiéndose notar fácilmente el cambio de fuente que existe entre las dos figuras.

Conclusiones

En esta entrada se ha visto una opción de personalización para las figuras de Matplotlib con la que es posible incluir ecuaciones y otros símbolos en nuestras figuras.