Introducción
Contenido
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 al gráfico, explicando lo que representa cada variable.
En este artículo, veremos cómo agregar una leyenda a una gráfica de Matplotlib.
Crear una parcela
Primero creemos una gráfica simple con dos variables:
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 seno, comenzando en 0
y termina en 10
con un paso de 0.1
, así como una función coseno en el mismo intervalo y paso. Ejecutar este código produce:
Ahora, sería muy útil etiquetarlos y agregar una leyenda para que alguien que no haya escrito 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 esta trama. En primer lugar, queremos label
estas variables, para que podamos hacer referencia a esas etiquetas en la leyenda. Entonces, simplemente podemos llamar legend()
sobre el ax
objeto para que se agregue la leyenda:
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:
Observe cómo la leyenda se colocó automáticamente en el único espacio libre donde las olas no la pasarán.
Personalizar leyenda en Matplotlib
Se agrega la leyenda, pero está un poco desordenada. Eliminemos el borde que lo rodea y lo movamos a otra ubicación, además de cambiar el tamaño de la parcela:
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:
Aquí, hemos utilizado el loc
argumento para especificar que nos gustaría poner la leyenda en la esquina superior derecha. Otros valores que se aceptan son upper left
, lower left
, upper right
, lower right
, upper center
, lower center
, center left
y center right
.
Además, puede utilizar center
ponerlo en el centro muerto, o best
para colocar la leyenda en el «mejor» lugar libre para que no se superponga con ninguno de los otros elementos. Por defecto, best
está seleccionado.
Agregar leyenda fuera de los ejes
A veces, es complicado colocar la leyenda dentro del cuadro de borde de una parcela. Quizás, hay muchos elementos en marcha 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 bbox_to_anchor
argumento, que especifica dónde queremos anclar la leyenda:
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:
los bbox_to_anchor
argumento acepta algunos argumentos en sí mismo. En primer lugar, acepta una tupla, que permite hasta 4 elementos. Aquí, podemos especificar el x
, y
, width
y height
de la leyenda.
Solo hemos configurado el x
y y
valores, para desplazarlo -0.10
debajo de los ejes, y 0.5
desde el lado izquierdo0
siendo la mano izquierda de la caja y 1
el lado derecho).
Al ajustarlos, puede establecer la leyenda en cualquier lugar. Dentro o fuera de la caja.
Luego, configuramos el shadow
a False
. Esto se usa para especificar si queremos una pequeña sombra renderizada debajo de la leyenda o no.
Finalmente, hemos configurado el ncol
argumento para 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:
Nota: los bbox_to_anchor
El argumento se usa junto con el loc
argumento. los loc
El argumento pondrá la leyenda basada en el bbox_to_anchor
. En nuestro caso, lo hemos puesto en el center
de la nueva ubicación desplazada de la caja fronteriza.
Conclusión
En este tutorial, hemos repasado cómo agregar una leyenda a sus gráficos de Matplotlib. En primer lugar, dejamos que Matplotlib averigüe dónde debe ubicarse la leyenda, después de lo cual usamos el bbox_to_anchor
argumento para especificar nuestra propia ubicación, fuera de los ejes.
Si está interesado en la visualización de datos y no sabe por dónde empezar, asegúrese de consultar nuestro libro sobre Visualización de datos en Python.
Data Visualization in Python, un libro para desarrolladores de Python principiantes e intermedios, lo guiará a través de la manipulación simple de datos con Pandas, cubrirá bibliotecas de trazado centrales como Matplotlib y Seaborn, y le mostrará cómo aprovechar las bibliotecas declarativas y experimentales como Altair.
Visualización de datos en Python
¡Comprenda mejor sus datos con visualizaciones! Con 340 páginas, aprenderá los entresijos de la visualización de datos en Python con bibliotecas populares como Matplotlib, Seaborn, Bokeh y más.