首页  >  文章  >  后端开发  >  如何在 Python 中动态调整图形框大小以适应扩展图例?

如何在 Python 中动态调整图形框大小以适应扩展图例?

Linda Hamilton
Linda Hamilton原创
2024-10-18 12:52:03142浏览

How to Dynamically Resize Figure Box to Fit Expanding Legend in Python?

调整图形框大小以适应扩展图例

在 Matplotlib 中将图例移动到轴之外时,遇到了一个挑战,其中图例可能会被图形框切断。当图例扩展到绘图区域边界之外时,会出现此问题。传统上,调整轴以适应更大的图例是推荐的解决方案,但这可能会导致数据大小减小,从而更难以解释。

动态调整图框大小

为了解决这个问题,建议的解决方案是动态调整图形框的大小以适应扩展的图例,而不改变数据大小。这种行为在 R 和 LaTeX 中可以观察到,但在 Python 中并没有立即显现出来。

动态调整图形框大小的代码

完成此动态调整大小的建议代码如下如下:

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

在此代码中,lgd 代表图例对象。通过指定 bbox_extra_artists=(lgd,),我们允许 savefig 动态调整图形框以适合图例。

复杂图例示例

这里是一个示例复杂的图例:

<code class="python">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')</code>

此代码生成一个具有超出轴区域的复杂图例的图。 bbox_extra_artists 参数调整图形框以容纳图例,从而显示整个图例。

注意:

自 2019 年以来,动态调整大小的代码已变为简化。现在以下命令就足够了:

<code class="python">plt.savefig('x.png', bbox_inches='tight')</code>

以上是如何在 Python 中动态调整图形框大小以适应扩展图例?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn