Python

Inclusión de texto en Matplotlib

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.

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: Matplotlib

Recent Posts

Por qué migrar tus proyectos TypeScript a ES Modules en 2026

Durante años, CommonJS (require/module.exports) ha sido la forma por defecto de organizar módulos en Node.js,…

4 días ago

Método del codo: interpretación correcta y limitaciones

Cuando usas k-means tienes que decidir algo incómodo de entrada: cuántos grupos, , vas a…

6 días ago

Errores comunes al interpretar resultados estadísticos

La estadística no suele fallar en los cálculos: falla en la interpretación. El test está…

2 semanas ago

Dashboard CLV: cuatro modelos, un mismo dataset, conclusiones muy distintas

Los artículos anteriores de esta serie cubrieron cuatro formas de mirar el valor del cliente:…

2 semanas ago

Curiosidad: Por qué la criptografía habla siempre de Alice y Bob

Quien se acerca a la criptografía descubre enseguida a dos personajes que aparecen en casi…

3 semanas ago

Desbalanceo de Clases en Credit Scoring: Por Qué Usamos Ponderación en lugar de Undersampling

En credit scoring el desbalanceo de clases es la norma, no la excepción. En una…

3 semanas ago

This website uses cookies.