Agregar leyenda a la figura en Matplotlib

A

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 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.

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad