调整图形框大小以适应扩展图例
在 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中文网其他相关文章!