Inclusión de texto en Matplotlib

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

En las figuras de Matplotlib es posible incluir texto en cualquier posición. Una característica que puede ser de gran utilidad cuando es necesario incluir comentarios relacionados con algunos valores. La función para crear anotaciones de texto en Matplotlib es plt.text() y su uso es tremendamente sencillo.

La función plt.text()

En Matplotlib, la forma de la función plt.text() es la siguiente:

plt.text(x, y, s, **kwargs)

Una función que tiene tres parámetros obligatorios:

  • x: posición en el eje x de donde se situará el texto,
  • y: posición en el eje y de donde se situará el texto,
  • s: cadena de texto que se desea incluir en la figura.

Además de estos también se pueden pasar otros parámetros como el tamaño de la fuente a usar o el color entre otros.

Por defecto, las coordenadas x e y indican donde comienza a escribirse la cadena de texto indicada, por lo que este debe ser el punto donde se hace la anotación.

Ejemplo de uso de plt.text()

Uno de los usos más básicos de plt.text() sería para crear una figura en la que se agrega un texto en el centro. Algo que se puede hacer con el siguiente código.

import matplotlib.pyplot as plt

plt.text(0.25, 0.55, 'Texto en Matplotlib',
         fontsize=18,
         color='blue')
plt.show()

Lo que genera como resultado la siguiente figura.

Ejemplo de texto en una figura de Matplotlib

En este caso se ha situado el texto en las coordenadas (0,25, 0,55) e indicado el uso de una fuente de 18 puntos en azul. Algo necesario para que se pueda ver mejor el mensaje dentro de la figura. Nótese que, como se ha indicado con antelación, el texto comienza en las coordenadas indicadas y ocupa todo el espacio necesario, siendo esto algo que se tendrá que tener en cuenta cuando se desee incluir cadenas largas.

Inclusión del texto en una caja

Los textos también se pueden escribir dentro de una caja. Algo que se puede conseguir pasándole un diccionario con las características de la caja a la propiedad bbox. Por ejemplo, mediante el siguiente ejemplo se puede crear una caja con el color de fondo en rojo, con un espaciado de 10 pixeles y canal alpha de 0,025.

plt.text(0.25, 0.55, 'Texto en Matplotlib',
         fontsize=18,
         color='blue',
         bbox={'facecolor':'red', 'pad':10, 'alpha':0.25})
plt.show()

Lo que genera como resultado la siguiente figura.

Texto en una caja dentro de un gráfico de Matplotlib

Asignar las anotaciones a un valor

A la hora de crear las anotaciones se puede emplear las funciones con las que se crean las figuras para asignar una anotación a un punto en concreto. Por ejemplo, en el siguiente trozo de código se insertan una anotación en 0,3 y otra en 1,4 a la altura donde se produce el valor.

import numpy as np

x = np.linspace(0, np.pi, 100)
y = np.cos(np.pi * x)
plt.plot(x, y)
plt.text(0.3, np.cos(np.pi * 0.3), 'cos(0.3 pi)', fontsize=18, color='green')
plt.text(1.4, np.cos(np.pi * 1.4), 'cos(1.4 pi)', fontsize=18, color='green')
plt.show()

Obteniendo como resultado la siguiente figura.

Anotaciones de texto en una figura de Matplotlib

Uso de LaTeX en las anotaciones

Además de esto, tal como se ha explicado en una entrada anterior, también se puede usar LaTeX para mejorar el formato de las anotaciones. Algo que solamente requiere cambiar un parámetro.

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

x = np.linspace(0, np.pi, 100)
y = np.cos(np.pi * x)
plt.plot(x, y)
plt.text(0.3, np.cos(np.pi * 0.3), r'$\cos(0.3 \pi)$', fontsize=18, color='green')
plt.text(1.4, np.cos(np.pi * 1.4), r'$\cos(1.4 \pi)$', fontsize=18, color='red')
plt.show()

Así el resultado del ejemplo queda de la siguiente manera.

Anotaciones con LaTeX en una figura de Matplotlib

Conclusiones

Hoy se ha visto cómo se puede usar plt.text() para agregar anotaciones de texto en Matplotlib. Siendo posible de esta manera incluir comentarios cuando éstos puedan ser necesarios para comprender mejor el contenido de las figuras.