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'aide de Tight_layout, permet à savefig de prendre en compte la légende lors du calcul de la taille de la zone de figure.
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')
Ceci 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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3