Maison >développement back-end >Tutoriel Python >Comment étendre dynamiquement la taille de la zone de figure pour s'adapter à une légende extensible dans Matplotlib ?

Comment étendre dynamiquement la taille de la zone de figure pour s'adapter à une légende extensible dans Matplotlib ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-18 12:51:30542parcourir

How to Expand Figure Box Size Dynamically to Accommodate an Expanding Legend in Matplotlib?

Zone de figure extensible pour s'adapter au dépassement de la légende

Description du problème

Lorsque vous placez une légende en dehors de l'axe dans Matplotlib, elle peut parfois s'étendre au-delà de l'axe. limites de la zone de figure, ce qui donne une apparence de coupure. Redimensionner les axes des axes en les réduisant n'est pas une solution optimale, car cela diminue la visibilité des données.

Extension dynamique de la zone de figure

La solution souhaitée est d'étendre dynamiquement la taille de la zone de figure à s'adapter à une légende en expansion.

Implémentation : appel savefig personnalisé avec bbox_extra_artists

Pour y parvenir, l'appel de la fonction savefig peut être ajusté pour inclure l'argument bbox_extra_artists :

<code class="python">fig.savefig('samplefigure', bbox_extra_artists=(lgd,), bbox_inches='tight')</code>

Ceci précise que la boîte de figurines doit prendre en compte des artistes supplémentaires, tels que la légende (lgd), lors du calcul de sa taille.

Exemple et résultat

Utilisation de cet appel savefig modifié :

<code class="python">import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(1)
ax = fig.add_subplot(111)
ax.set_title("Trigonometry")
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')
lgd = ax.legend(loc='upper center', bbox_to_anchor=(0.5,-0.1))
ax.grid('on')
fig.savefig('samplefigure', bbox_extra_artists=(lgd,), bbox_inches='tight')</code>

Produit une figure avec la légende s'étendant au-delà de l'axe mais logée dans la boîte de figure agrandie :

  Trigonometry

  2
  1
  0
 -1
 -2
 -4π  -2π     0     2π    4π
Inverse tan
Cosine
Sine

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