Matplotlib est une puissante bibliothèque Python pour créer des visualisations, mais le placement par défaut de la légende peut parfois encombrer vos graphiques. Cet article présente des méthodes efficaces pour placer les légendes en dehors de la zone de tracé afin d’améliorer la lisibilité.
Table des matières
- Utiliser
bbox_to_anchor
pour le placement de la légende - Empêcher les légendes coupées avec
bbox_extra_artists
etbbox_inches
Utiliser bbox_to_anchor
pour le placement de la légende
L’argument bbox_to_anchor
dans la fonction legend()
offre un positionnement précis de la légende. Il prend un tuple (x, y) spécifiant le coin inférieur gauche de la légende dans les coordonnées de la figure. (0,0) est le coin inférieur gauche, et (1,1) est le coin supérieur droit. L’argument loc
affine davantage le placement au sein de ce point d’ancrage.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
fig, ax = plt.subplots()
ax.plot(x, y1, label='sin(x)')
ax.plot(x, y2, label='cos(x)')
ax.legend(bbox_to_anchor=(1.1, 1), loc='upper left') # Ajuster (1.1,1) selon les besoins
ax.set_title('Ondes sinusoïdales et cosinusoïdales')
ax.set_xlabel('x')
ax.set_ylabel('y')
plt.tight_layout()
plt.show()
Ici, bbox_to_anchor=(1.1, 1)
place la légende légèrement à droite du graphique (x=1.1) et en haut (y=1). loc='upper left'
aligne la légende au sein de cet ancrage. Expérimentez avec différentes valeurs loc
(par exemple, ‘upper right’, ‘lower left’, ‘center’) et ajustez les coordonnées (x,y) pour un positionnement optimal.
Empêcher les légendes coupées avec bbox_extra_artists
et bbox_inches
Les légendes volumineuses ou les figures serrées peuvent entraîner des légendes coupées même avec bbox_to_anchor
. bbox_extra_artists
et bbox_inches
résolvent ce problème. bbox_extra_artists
inclut la légende dans le calcul de la boîte englobante pour l’enregistrement, et bbox_inches='tight'
assure des marges serrées, empêchant le rognage.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 500) # Plus de données pour une légende plus grande
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
fig, ax = plt.subplots()
ax.plot(x, y1, label='sin(x)')
ax.plot(x, y2, label='cos(x)')
ax.plot(x, y3, label='tan(x)')
leg = ax.legend(bbox_to_anchor=(1.05, 1), loc='upper left')
fig.savefig('legend_outside.png', bbox_extra_artists=[leg], bbox_inches='tight')
plt.show()
La légende est stockée dans leg
, puis passée à bbox_extra_artists
dans savefig
. bbox_inches='tight'
garantit que toute la figure, y compris la légende, est enregistrée. Remplacez 'legend_outside.png'
par le nom de fichier souhaité.
Ces techniques permettent un placement flexible et efficace des légendes dans Matplotlib, améliorant la clarté et l’attrait visuel de vos graphiques. Expérimentez avec différents paramètres pour obtenir la mise en page parfaite.