Python

Uso de LaTeX en Matplotlib

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.

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: Matplotlib

Recent Posts

Por Qué las Contraseñas Largas son más Seguras que las Complejas

"Tu contraseña debe tener al menos 8 caracteres, una mayúscula, un número y un símbolo…

1 hora ago

Gini, KS y AUC: Cómo Medir la Calidad de un Modelo de Credit Scoring

Cuando un analista de riesgo presenta un nuevo scorecard ante el comité de dirección, la…

2 días ago

Curiosidad: De dónde vienen foo, bar y foobar

Si revisáis código o documentación de otros programadores, tarde o temprano os toparéis con dos…

1 semana ago

BG/NBD + Gamma/Gamma: el modelo probabilístico para CLV en compras continuas

Los dos artículos anteriores cubrieron el CLV clásico —una fórmula útil pero que trata a…

1 semana ago

Errores habituales al trabajar con DataFrames grandes en Pandas (y cómo evitarlos)

Hay un momento muy concreto en la vida de casi todo análisis: el código que…

2 semanas ago

Champion vs Challenger: Cómo los Bancos Validan Modelos Nuevos antes de Ponerlos en Producción

Has construido un nuevo modelo de credit scoring. Las métricas de validación son mejores que…

2 semanas ago

This website uses cookies.