Cómo especificar la posición de la leyenda en las coordenadas de los gráficos en Matplotlib
Podemos especificar la posición de una leyenda en un gráfico estableciendo el valor del parámetro loc
.
Ejemplos: Especificar la posición de la leyenda en coordenadas del gráfico en Matplotlib
import matplotlib.pyplot as plt
x = [1, 2, 3]
y1 = [0.5 * i + 1 for i in x]
y2 = [2 * i + 1 for i in x]
fig, ax = plt.subplots(2, 1)
ax[0].plot(x, y1, "b-", label="0.5x+1")
ax[0].plot(x, y2, "g-", label="2x+1")
ax[0].legend(loc="best")
ax[1].plot(x, y1, "b-", label="0.5x+1")
ax[1].plot(x, y2, "g-", label="2x+1")
ax[1].legend(loc="lower left")
plt.tight_layout()
plt.show()
Resultado:
Aquí, tenemos una figura con dos subtramas. La subtrama superior tiene loc
en best
; esto coloca la leyenda en la mejor posición de la figura, donde no tenemos ningún contenido.
Algo similar ocurre en la segunda subplot de la parte inferior: la leyenda se coloca en la posición inferior izquierda del cuadro delimitador, cubriendo todos los ejes. El cuadro delimitador está especificado por el parámetro bbox_to_anchor
, cuyo valor por defecto es (0,0,1,1)
.
El parámetro loc
puede tomar cualquiera de los siguientes valores:
best |
upper right |
upper left |
lower left |
lower right |
right |
center left |
center right |
lower center |
upper center |
center |
Estas posiciones representan la posición de la leyenda, con respecto al cuadro delimitador especificado por el parámetro bbox_to_anchor
.
Del mismo modo, podemos colocar la leyenda en cualquier posición de la figura cambiando el valor del parámetro bbox_to_anchor
. El parámetro bbox_to_anchor
toma una tupla, que representa la coordenada, donde se colocará la esquina especificada por el parámetro loc
.
import matplotlib.pyplot as plt
x = [1, 2, 3]
y1 = [0.5 * i + 1 for i in x]
y2 = [2 * i + 1 for i in x]
fig, ax = plt.subplots(2, 1)
ax[0].plot(x, y1, "b-", label="Plot-1")
ax[0].plot(x, y2, "g-", label="Plot-2")
ax[0].legend(loc="upper left", bbox_to_anchor=(0.9, 0.75))
ax[0].scatter((0.9), (0.75), s=70, c="red", transform=ax[0].transAxes)
ax[1].plot(x, y1, "b-", label="Plot-1")
ax[1].plot(x, y2, "g-", label="Plot-2")
ax[1].legend(loc="center right", bbox_to_anchor=(0.6, 0.4))
ax[1].scatter((0.6), (0.4), s=70, c="red", transform=ax[1].transAxes)
plt.tight_layout()
plt.show()
Resultado:
En la subplot de arriba, hemos puesto la bbox_to_anchor
en (0.9,0.75)
, que está marcada por el punto rojo de la subplot. El valor del parámetro loc
"upper left"
representa la esquina superior izquierda de la leyenda, que se coloca en el punto rojo.
La subplot en la parte inferior, el parámetro bbox_to_anchor
se establece en (0.6,0.4)
marcado por el punto rojo en los ejes inferiores de la figura. El valor de loc
se establece en "center right"
; por lo tanto, la leyenda de los ejes inferiores tiene su esquina centro derecha en el punto rojo.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedInArtículo relacionado - Matplotlib Legend
- Cómo colocar la leyenda fuera de la trama en Matplotlib
- Cómo cambiar el tamaño de la fuente de la leyenda en Matplotlib
- Cómo crear una única leyenda para todas las subtramas de Matplotlib
- Cómo establecer el ancho de línea de las líneas en la leyenda Matplotlib
- Cómo eliminar la leyenda en Matplotlib
- Título de la leyenda de Matplotlib