Cambiar el tamaño del cuadro de figura para acomodar la leyenda expandida
Al mover la leyenda fuera del eje en Matplotlib, se encuentra un desafío donde la leyenda puede ser cortado por el cuadro de la figura. Este problema ocurre cuando la leyenda se expande más allá del límite del área de trazado. Tradicionalmente, la solución recomendada ha sido ajustar el eje para acomodar la leyenda más grande, pero puede resultar en una reducción del tamaño de los datos, lo que los hace más difíciles de interpretar.
Cambio de tamaño dinámico del cuadro de figura
Para abordar este problema, la solución propuesta es cambiar dinámicamente el tamaño del cuadro de figura para acomodar la leyenda en expansión sin alterar el tamaño de los datos. Este comportamiento se observa en R y LaTeX, pero no fue evidente de inmediato en Python.
Código para cambiar el tamaño dinámicamente del cuadro de figuras
El código sugerido para lograr este cambio de tamaño dinámico es el siguiente sigue:
fig.savefig('samplefigure', bbox_extra_artists=(lgd,), bbox_inches='tight')
En este código, lgd representa el objeto de leyenda. Al especificar bbox_extra_artists=(lgd,), permitimos que savefig ajuste dinámicamente el cuadro de la figura para que se ajuste a la leyenda.
Ejemplo con leyenda compleja
Aquí hay un ejemplo con una leyenda compleja:
import matplotlib.pyplot as plt
import numpy as np
# Create figure and subplot
fig = plt.figure(1)
ax = fig.add_subplot(111)
# Plot data and create legend
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))
# Add arbitrary text for testing
text = ax.text(-0.2,1.05, "Aribitrary text", transform=ax.transAxes)
# Set title and grid
ax.set_title("Trigonometry")
ax.grid('on')
# Save figure with dynamic resizing
fig.savefig('samplefigure', bbox_extra_artists=(lgd,text), bbox_inches='tight')
Este código genera un gráfico con una leyenda compleja que se extiende más allá del área del eje. El parámetro bbox_extra_artists ajusta el cuadro de la figura para acomodar la leyenda, lo que hace que se muestre la leyenda completa.
Nota:
Desde 2019, el código para el cambio de tamaño dinámico se ha convertido en simplificado. El siguiente comando ahora es suficiente:
plt.savefig('x.png', bbox_inches='tight')
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3