HOWTO · Matplotlib
Posiziona la legenda all'esterno del grafico in Matplotlib
Questo tutorial introduce come posizionare la legenda al di fuori della trama in Matplotlib.
In questa pagina
La legenda potrebbe essere posizionata fuori dal grafico in Matplotlib usando bbox_to_anchor. bbox significa bounding box che contiene la leggenda. bbox_to_anchor specifica la posizione della casella della legenda.
plt.legend(bbox_to_anchor=(1.05, 1))
Posiziona la legenda nella posizione (1.05, 1) nelle coordinate degli assi. (0, 0) è l’angolo inferiore sinistro e (1.0, 1.0) è l’angolo superiore destro delle coordinate degli assi.
La dimensione e la posizione effettive del riquadro di delimitazione della legenda sono definite con il parametro a 4 tuple di bbox_to_anchor e loc in plt.legend.
plt.legend(bbox_to_anchor=(x0, y0, width, height), loc=)
width e height sono la larghezza e l’altezza del riquadro della legenda, e (x0, y0) è la coordinata della loc del riquadro di delimitazione.
Il valore di loc potrebbe essere un numero o una stringa che ha la relazione come sotto,
| Loc Number | Loc String |
|---|---|
| 0 | best |
| 1 | upper right |
| 2 | upper left |
| 3 | lower left |
| 4 | lower right |
| 5 | right |
| 6 | center left |
| 7 | center right |
| 8 | lower center |
| 9 | upper center |
| 10 | center |
plt.legend(bbox_to_anchor=(1.05, 1.0, 0.3, 0.2), loc="upper left")
Il codice sopra indica che la casella della legenda è posizionata alle coordinate degli assi (1.05, 1.0) che ha la larghezza di 0.3 e l’altezza di 0.2, dove (1.05, 1.0) è la coordinata della parte superiore angolo sinistro del riquadro di delimitazione della legenda.
bbox_to_anchor Esempio
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
plt.plot(x, np.sin(x), label="sin(x)")
plt.plot(x, np.cos(x), label="cos(x)")
plt.legend(bbox_to_anchor=(1.05, 1.0), loc="upper left")
plt.tight_layout()
plt.show()
plt.tight_layout() rende le sottotrame ben adattate alla figura.
La casella della legenda verrebbe tagliata se tight_layout() non viene chiamato.
bbox_extra_artists e bbox_inches per impedire che il riquadro della legenda venga ritagliato
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
plt.plot(x, np.sin(x), label="sin(x)")
plt.plot(x, np.cos(x), label="cos(x)")
lg = plt.legend(bbox_to_anchor=(1.05, 1.0), loc="upper left")
plt.savefig(
"example.png", dpi=300, format="png", bbox_extra_artists=(lg,), bbox_inches="tight"
)
bbox_extra_artists specifica l’lista di Artist che sarà preso in considerazione quando calcola il tight bbox.
Se bbox_inches è impostato su tight, verrà individuato il bbox tight della figura.