Data Visualization

Maîtriser le Placement des Légendes dans Matplotlib

Spread the love

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

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *