Maison >développement back-end >Tutoriel Python >Comment empêcher la légende de coupure dans Matplotlib et maintenir la visibilité des données ?

Comment empêcher la légende de coupure dans Matplotlib et maintenir la visibilité des données ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-18 12:20:03480parcourir

How to Prevent Cut-off Legend in Matplotlib and Maintain Data Visibility?

Adressage de la légende de coupure dans Matplotlib en redimensionnant la zone de figure

Dans Matplotlib, déplacer la légende en dehors de l'axe du tracé entraîne souvent sa coupure par la zone de figure. Bien que la réduction de l'axe ait été suggérée comme solution, cela diminue la visibilité des données, en particulier lors de la présentation de tracés complexes avec de nombreuses entrées de légende.

Une approche plus efficace, comme le souligne la réponse de Benjamin Root sur la liste de diffusion Matplotlib, implique modifier l'appel savefig pour incorporer la légende en tant qu'artiste supplémentaire :

fig.savefig('samplefigure', bbox_extra_artists=(lgd,), bbox_inches='tight')

Cette méthode, similaire à l'utilisation de tight_layout, permet à savefig de prendre en compte la légende lors du calcul de la taille de la boîte de la figure.

Le L'exemple de code amélioré suivant illustre la solution :

import matplotlib.pyplot as plt
import numpy as np

plt.gcf().clear()
x = np.arange(-2*np.pi, 2*np.pi, 0.1)
fig = plt.figure(1)
ax = fig.add_subplot(111)
ax.plot(x, np.sin(x), label='Sine')
ax.plot(x, np.cos(x), label='Cosine')
ax.plot(x, np.arctan(x), label='Inverse tan')
handles, labels = ax.get_legend_handles_labels()
lgd = ax.legend(handles, labels, loc='upper center', bbox_to_anchor=(0.5,-0.1))
text = ax.text(-0.2,1.05, "Aribitrary text", transform=ax.transAxes)
ax.set_title("Trigonometry")
ax.grid('on')
fig.savefig('samplefigure', bbox_extra_artists=(lgd,text), bbox_inches='tight')

Cela ajuste désormais dynamiquement la taille de la zone de figure pour s'adapter à la légende, empêchant sa coupure tout en conservant la visibilité des données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn