Maison >développement back-end >Tutoriel Python >Boîte de figures à expansion dynamique pour les légendes en dehors des axes : une 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!