HOWTO · Matplotlib
Specificare la posizione della legenda nelle coordinate del grafico in Matplotlib
Questo articolo mostra come specificare la posizione della legenda in un grafico in Matplotlib.
In questa pagina
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:
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:
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.