Agregar etiquetas a los puntos en Matplotlib

Publicado el 18 agosto 2022 por Daniel Rodríguez @analyticslane

En los gráficos de dispersión una manera de ayudar a los lectores a identificar valores especiales es incluir una etiqueta. Asignando un nombre a ese punto específico. La forma más sencilla para agregar etiquetas a los puntos en Matplotlib es mediante el uso de la función annotate(). Una función sencilla que solamente requiere la cadena de texto con el mensaje y la posición en la que se desea situar.

Agregar una etiqueta asociada a un punto en Matplotlib

El proceso para mostrar un mensaje asociado a un valor en una gráfica de dispersión creada con Matplotlib es sencillo. Tras la creación de una gráfica, pero antes de dibujarla o guardarla, se puede llamar a la función annotate() para insertar la anotación. Llamada que se puede realizar varias veces para agregar múltiples textos.

Este proceso se puede ver en el siguiente código. En el que, una vez importado Matplotlib, inicialmente se definen dos listas ( x e y) con los valores que se desean dibujar. Tras lo cual se dibujan mediante la función scatter(). Una vez hecho esto se incluye un anotación mediante el uso de la función annotate(), a la que se la ha pasado como primer parámetro el texto y segundo una tupla con la posición en la que se desea dibujar el mensaje, en este caso el segundo punto de la lista. Finalmente, se agrega una etiqueta para el eje de abscisas y otra para el eje de coordenadas antes de dibujar la figura.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [4, 3, 2, 5, 3]

plt.scatter(x, y, label="Valores")

plt.annotate("Punto 2", (2, 3))

plt.xlabel("X")
plt.ylabel("Valores")
plt.show()

Una vez ejecutado este código se obtiene la siguiente figura en la que se puede apreciar la anotación.

Gráfica de dispersión con una anotación cerca del segundo punto creada con Matplotlib

Posiblemente la etiqueta esté demasiado cerca del punto, pero esto se puede solucionar fácilmente separando ligeramente la posición en la que comienza a escribirse el texto.

Agregar múltiples etiquetas a los puntos en Matplotlib

Como se ha comentado anteriormente, es posible incluir en la gráfica tantas anotaciones como sea necesario. Esto es algo que se muestra en el siguiente código donde se emplea un bucle para agregar las anotaciones.

annotations=["Punto 1", "Punto 2", "Punto 3", "Punto 4", "Punto 5"]

plt.scatter(x, y, label="Valores")
plt.xlabel("X")
plt.ylabel("Valores")

for i, label in enumerate(annotations):
    plt.annotate(label, (x[i] + 0.1, y[i]))
    
plt.show()

Al ejecutar este programa se obtiene la siguiente figura

Gráfica de dispersión con múltiples anotaciones creada con Matplotlib

Aunque es necesario ser precavidos, demasiadas anotaciones pueden tener el efecto contrario ya que puede hacer más complicada la interpretación de la gráfica.

Conclusiones

La función annotate() de Matplotlib puede ser una gran aliada para hacer más fácil la interpretación de una gráfica. Al permitir asociar etiquetas a los puntos en Matplotlib. Reforzado de esta manera la información incluida en la gráfica.