Comment spécifier la position de la légende dans les coordonnées du graphique dans Matplotlib

Suraj Joshi 16 novembre 2020
Comment spécifier la position de la légende dans les coordonnées du graphique dans Matplotlib

Nous pouvons spécifier la position d’une légende dans un graphe en fixant la valeur du paramètre loc.

Exemples : Spécifier la position de la légende dans les coordonnées d’un graphe 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()

Production:

Spécifier la position de la légende dans les coordonnées du graphique Matplotlib

Ici, nous avons un chiffre avec deux sous-intrigues. La sous-parcelle supérieure a un loc réglé sur best ; cela place la légende dans la meilleure position de la figure, là où nous n’avons pas de contenu.

Une chose similaire se produit dans la deuxième sous-placette du bas : la légende est placée à la position inférieure gauche de la boîte de délimitation, couvrant les axes entiers. La boîte englobante est spécifiée par le paramètre bbox_to_anchor, dont la valeur par défaut est (0,0,1,1).

Le paramètre loc peut prendre l’une des valeurs suivantes :

best
upper right
upper left
lower left
lower right
right
center left
center right
lower center
upper center
center

Ces positions représentent la position de la légende, par rapport à la boîte englobante spécifiée par le paramètre bbox_to_anchor.

De même, nous pouvons placer la légende à n’importe quelle position dans la figure en changeant la valeur du paramètre bbox_to_anchor. Le paramètre bbox_to_anchor prend un tuple, représentant la coordonnée, où le coin spécifié par le paramètre loc sera placé.

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

Production:

Définir bbox_to_anchor pour spécifier la position de la légende dans les coordonnées du graphique Matplotlib

Dans la sous-parcelle du haut, nous avons fixé la bbox_to_anchor à (0.9,0.75), qui est marquée par le point rouge sur la sous-parcelle. La valeur du paramètre loc "upper left" représente le coin supérieur gauche de la légende, qui est placé au niveau du point rouge.

La sous-placette du bas, la bbox_to_anchor est fixée à (0.6,0.4), marquée par le point rouge sur les axes inférieurs de la figure. La valeur de loc est fixée à "center right" ; ainsi, la légende des axes inférieurs a son coin centre droit au niveau du point rouge.

Auteur: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Article connexe - Matplotlib Legend