Cómo especificar la posición de la leyenda en las coordenadas de los gráficos en Matplotlib

Suraj Joshi 17 diciembre 2020
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:

Especificar la posición de la leyenda en las coordenadas del gráfico Matplotlib

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:

Establezca bbox_to_anchor para especificar la posición de la leyenda en las coordenadas del gráfico Matplotlib

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 avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artículo relacionado - Matplotlib Legend