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

Jinku Hu 30 janvier 2023
  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
Comment placer la légende en dehors du terrain dans Matplotlib

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.

Auteur: 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 Facebook

Article connexe - Matplotlib Legend