Comment placer la légende en dehors du terrain dans Matplotlib

  1. Exemple de bbox_to_anchor
  2. bbox_extra_artists et bbox_inches pour éviter que la boîte de légende ne soit recadrée

La légende peut être placée à l’extérieur de la parcelle dans Matplotlib en utilisant bbox_to_anchor. La bbox signifie boîte à bornes qui accueille la légende.

plt.legend(bbox_to_anchor=(1.05, 1))

Elle place la légende à la position (1.05, 1) dans les coordonnées des axes. (0, 0) est le coin inférieur gauche, et (1.0, 1.0) est le coin supérieur droit de l’axe des coordonnées.

La taille et la position réelles de la boîte de délimitation de la légende sont définies avec le paramètre à 4 tubes de bbox_to_anchor et loc dans la plt.legend.

plt.legend(bbox_to_anchor=(x0, y0, width, height), loc=)

width et height sont la largeur et la hauteur de la boîte de légende, et (x0, y0) est la coordonnée du loc de la boîte de délimitation.

La valeur de “local” peut être un nombre ou une chaîne de caractères qui a la relation suivante

Numéro de localité 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')

Le code ci-dessus signifie que la boîte de légende est positionnée à la coordonnée de l’axe (1.05, 1.0) qui a la largeur de 0.3 et la hauteur de 0.2, où (1.05, 1.0) est la coordonnée du coin supérieur gauche de la boîte de délimitation de la légende.

Exemple de bbox_to_anchor

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

Légende de Matplotlib bbox_to_anchor Exemple

plt.tight_layout() fait que les sous-parcelles s’intègrent bien dans la figure.

La boîte de légende sera recadrée si tight_layout() n’est pas appelée.

Matplotlib Legend bbox_to_anchor Cropped

bbox_extra_artists et bbox_inches pour éviter que la boîte de légende ne soit recadrée

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 spécifie la liste des Artist qui seront pris en considération lors du calcul de la bbox serrée.

Si la bbox_inches est définie comme étant serrée, elle calculera la bbox serrée de la figure.

Article connexe - Matplotlib Legend

  • Comment définir la largeur de ligne des lignes dans la légende Matplotlib
  • Comment spécifier la position de la légende dans les coordonnées du graphique dans Matplotlib