Posiziona la legenda all'esterno del grafico in Matplotlib

Jinku Hu 12 aprile 2021 30 marzo 2021
  1. bbox_to_anchor Esempio
  2. bbox_extra_artists e bbox_inches per impedire che il riquadro della legenda venga ritagliato
Posiziona la legenda all'esterno del grafico in Matplotlib

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()

Matplotlib Legend bbox_to_anchor Esempio

plt.tight_layout() rende le sottotrame ben adattate alla figura.

La casella della legenda verrebbe tagliata se tight_layout() non viene chiamato.

Matplotlib Legend bbox_to_anchor Ritagliata

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.

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

Articolo correlato - Matplotlib Legend