Specificare la posizione della legenda nelle coordinate del grafico in Matplotlib

Suraj Joshi 12 aprile 2021
Specificare la posizione della legenda nelle coordinate del grafico in Matplotlib

Possiamo specificare la posizione di una legenda in un grafico impostando il valore del parametro loc.

Esempi: specificare la posizione della legenda nelle coordinate del grafico 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()

Produzione:

Specificare la posizione della legenda nelle coordinate del grafico Matplotlib

Qui abbiamo una figura con due sottotrame. La sottotrama più in alto ha loc impostato su best; questo pone la legenda nella posizione migliore della figura, dove non abbiamo alcun contenuto.

Una cosa simile accade nella seconda sottotrama in basso: la legenda è posta nella posizione inferiore sinistra del riquadro di delimitazione, coprendo tutti gli assi. Il riquadro di delimitazione è specificato dal parametro bbox_to_anchor, il cui valore predefinito è (0,0,1,1).

Il parametro loc può assumere uno qualsiasi dei seguenti valori:

best
upper right
upper left
lower left
lower right
right
center left
center right
lower center
upper center
center

Queste posizioni rappresentano la posizione della legenda, rispetto al riquadro di delimitazione specificato dal parametro bbox_to_anchor.

Allo stesso modo, possiamo posizionare la legenda in qualsiasi posizione nella figura cambiando il valore del parametro bbox_to_anchor. Il parametro bbox_to_anchor prende una tupla, che rappresenta la coordinata, dove verrà posizionato l’angolo specificato dal parametro 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()

Produzione:

Imposta bbox_to_anchor per specificare la posizione della legenda nelle coordinate del grafico Matplotlib

Nella sottotrama in alto, abbiamo impostato bbox_to_anchor a (0.9,0.75), che è contrassegnato dal punto rosso sulla sottotrama. Il valore del parametro loc "upper left" rappresenta l’angolo in alto a sinistra della legenda, che si trova nel punto rosso.

La sottotrama in basso, il bbox_to_anchor è impostato su (0.6,0.4) contrassegnato dal punto rosso sugli assi inferiori della figura. Il valore di loc è impostato su "center right"; quindi, la legenda degli assi inferiori ha il suo angolo "center right" sul punto rosso.

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Articolo correlato - Matplotlib Legend