Maison  >  Article  >  développement back-end  >  Boîte de figures à expansion dynamique pour les légendes en dehors des axes : une solution

Boîte de figures à expansion dynamique pour les légendes en dehors des axes : une solution

Linda Hamilton
Linda Hamiltonoriginal
2024-10-18 12:04:03158parcourir

Dynamically Expanding Figure Box for Legends Outside Axes: A Solution

Redimensionnement dynamique de la boîte à figures pour les légendes

Lorsque vous placez des légendes en dehors des axes de l'intrigue dans Matplotlib, elles peuvent être coupées par la boîte à figures . Ce problème survient lorsque la longueur de la légende dépasse la taille de l'axe.

Évitement du rétrécissement de l'axe

Contrairement à d'autres solutions, il est préférable d'éviter le rétrécissement de l'axe pour maintenir la visibilité des données. La réduction des axes réduit la lisibilité des données, en particulier lorsqu'il s'agit de tracés complexes avec des légendes étendues.

Extension dynamique de la zone de figure

Pour agrandir dynamiquement la zone de figure pour s'adapter à la légende, ajustez l'appel savefig comme suit :

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

où bbox_extra_artists prend en compte les artistes supplémentaires (dans ce cas, la légende) lors de la détermination de la taille du cadre de délimitation.

Exemple de code

Le code suivant génère un tracé avec une légende en dehors des axes et redimensionne automatiquement la zone de la figure à l'aide de bbox_extra_artists :

import matplotlib.pyplot as plt
import numpy as np

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

Ce code aboutit au tracé avec la légende en dehors des axes, et la zone de figure est ajustée dynamiquement pour s'adapter à la taille de la légende.

Conclusion

En utilisant le paramètre bbox_extra_artists dans savefig, vous pouvez étendre dynamiquement la zone de figure pour vous assurer que les légendes hors des axes ne sont pas coupées. Cette approche fournit une solution pratique et efficace sans les inconvénients du rétrécissement de l'axe.

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