Agregar leyenda a la figura en Matplotlib

En este tutorial, repasaremos algunos ejemplos de cómo agregar una leyenda a una figura/gráfico de Matplotlib. También agregaremos una leyenda fuera de los ejes usando bbox_to_anchor con loc.

Introducción

Matplotlib es una de las bibliotecas de visualización de datos más utilizadas en Python. Por lo general, al visualizar más de una variable, querrá agregar una leyenda a la gráfica, explicando lo que representa cada variable.

En este artículo, veremos cómo agregar una leyenda a un diagrama de Matplotlib.

Creando una Parcela

Primero creemos una gráfica simple con dos variables:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()

x = np.arange(0, 10, 0.1)
y = np.sin(x)
z = np.cos(x)

ax.plot(y, color='blue')
ax.plot(z, color='black')

plt.show()

Aquí, hemos trazado una función de seno, comenzando en 0 y terminando en 10 con un paso de 0.1, así como una función de coseno en el mismo intervalo y paso. Ejecutar este código produce:

sine visualization python

Ahora, sería muy útil etiquetarlos y agregar una leyenda para que alguien que no escribió este código pueda discernir más fácilmente cuál es cuál.

Agregar leyenda a una figura en Matplotlib

Agreguemos una leyenda a este diagrama. En primer lugar, querremos ’etiquetar’ estas variables, para que podamos referirnos a esas etiquetas en la leyenda. Luego, podemos simplemente llamar a legend() en el objeto ax para que se agregue la leyenda:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()

x = np.arange(0, 10, 0.1)
y = np.sin(x)
z = np.cos(x)

ax.plot(y, color='blue', label='Sine wave')
ax.plot(z, color='black', label='Cosine wave')
leg = ax.legend()

plt.show()

Ahora, si ejecutamos el código, la trama tendrá una leyenda:

add legend to matplotlib plot

Observe cómo la leyenda se colocó automáticamente en el único espacio libre donde las olas no la atropellarán.

Personalizar leyenda en Matplotlib

Se agrega la leyenda, pero está un poco desordenada. Quitemos el borde que lo rodea y movámoslo a otra ubicación, así como cambiar el tamaño de la trama:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(12, 6))

x = np.arange(0, 10, 0.1)
y = np.sin(x)
z = np.cos(x)

ax.plot(y, color='blue', label='Sine wave')
ax.plot(z, color='black', label='Cosine wave')
leg = ax.legend(loc='upper right', frameon=False)

plt.show()

Esto resulta en:

customizing legend in matplotlib

Aquí, hemos usado el argumento loc para especificar que nos gustaría colocar la leyenda en la esquina superior derecha. Otros valores que se aceptan son superior izquierdo, inferior izquierdo, superior derecho, inferior derecho, superior central, inferior central, centro izquierdo y centro derecho.

Además, puede usar center para colocarlo en el punto muerto, o best para colocar la leyenda en el "mejor" lugar libre para que no se superponga con ninguno de los otros elementos. De forma predeterminada, se selecciona mejor.

Agregar leyenda fuera de los ejes

A veces, es complicado colocar la leyenda dentro del cuadro de borde de un gráfico. Tal vez, están sucediendo muchos elementos y todo el cuadro está lleno de datos importantes.

En tales casos, puede colocar la leyenda fuera de los ejes y lejos de los elementos que la constituyen. Esto se hace a través del argumento bbox_to_anchor, que especifica dónde queremos anclar la leyenda:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(12, 6))

x = np.arange(0, 10, 0.1)
y = np.sin(x)
z = np.cos(x)

ax.plot(y, color='blue', label='Sine wave')
ax.plot(z, color='black', label='Cosine wave')
leg = ax.legend(loc='center', bbox_to_anchor=(0.5, -0.10), shadow=False, ncol=2)

plt.show()

Esto resulta en:

add legend outside of axes

El argumento bbox_to_anchor acepta algunos argumentos. En primer lugar, acepta una tupla, lo que permite hasta 4 elementos. Aquí, podemos especificar x, y, width y height de la leyenda.

Solo hemos establecido los valores x e y, para desplazarlo -0.10 debajo de los ejes, y 0.5 desde el lado izquierdo (0 es el lado izquierdo del cuadro y 1 el lado derecho).

Al modificarlos, puede configurar la leyenda en cualquier lugar. Dentro o fuera de la caja.

Luego, hemos configurado shadow en False. Esto se usa para especificar si queremos que se represente una pequeña sombra debajo de la leyenda o no.

Finalmente, hemos establecido el argumento ncol en 2. Esto especifica el número de etiquetas en una columna. Como tenemos dos etiquetas y queremos que estén en una columna, lo hemos configurado en 2. Si cambiamos este argumento a 1, se colocarían uno encima del otro:

add legend outside of axes with one col

Nota: El argumento bbox_to_anchor se usa junto al argumento loc. El argumento loc colocará la leyenda basada en bbox_to_anchor. En nuestro caso, lo hemos puesto en el centro de la nueva ubicación desplazada del cuadro de borde.

Conclusión

En este tutorial, hemos repasado cómo agregar una leyenda a sus gráficos de Matplotlib. En primer lugar, dejamos que Matplotlib descubra dónde debe ubicarse la leyenda, después de lo cual usamos el argumento bbox_to_anchor para especificar nuestra propia ubicación, fuera de los ejes.

Si está interesado en Visualización de datos y no sabe por dónde empezar, asegúrese de consultar nuestro paquete de libros en [Visualización de datos en Python](https://gum.co/data-visualization -en-paquete-de-libros-de-python):

Visualización de datos en Python Descuento por tiempo limitado: 2 por 1, ¡ahorra un 50 %! ✅ Garantía de devolución de dinero de 30 días sin preguntas ✅ Principiante a Avanzado ✅ Actualizado periódicamente de forma gratuita (última actualización en abril de 2021) ✅ Actualizado con recursos y guías adicionales

Visualización de datos en Python con Matplotlib y Pandas es un libro diseñado para llevar a los principiantes absolutos a Pandas y Matplotlib, con conocimientos básicos de Python, y permitirles construir una base sólida para el trabajo avanzado con estas bibliotecas, desde gráficos simples. a gráficos 3D animados con botones interactivos.

Sirve como una guía detallada que le enseñará todo lo que necesita saber sobre Pandas y Matplotlib, incluido cómo construir tipos de gráficos que no están integrados en la propia biblioteca.

Visualización de datos en Python, un libro para desarrolladores principiantes e intermedios de Python, lo guía a través de la manipulación de datos simple con Pandas, cubre bibliotecas de trazado centrales como Matplotlib y Seaborn, y le muestra cómo aprovechar las bibliotecas declarativas y experimentales. como Altair. Más específicamente, a lo largo de 11 capítulos, este libro cubre 9 bibliotecas de Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas y VisPy.

Sirve como una guía práctica única para la visualización de datos, en una plétora de herramientas que podría usar en su carrera.