调整图形框大小以适应扩展图例
在 Matplotlib 中将图例移动到轴之外时,会遇到一个挑战,其中图例可能会被图形框切断。当图例扩展到绘图区域边界之外时,会出现此问题。传统上,调整轴以适应较大的图例一直是推荐的解决方案,但这可能会导致数据大小减小,从而更难以解释。
动态调整图框大小
为了解决这个问题,建议的解决方案是动态调整图形框的大小以适应扩展的图例,而不改变数据大小。这种行为在 R 和 LaTeX 中可以观察到,但在 Python 中并不立即明显。
动态调整图框大小的代码
完成此动态调整大小的建议代码如下如下:
fig.savefig('samplefigure', bbox_extra_artists=(lgd,), bbox_inches='tight')
在此代码中,lgd 代表图例对象。通过指定 bbox_extra_artists=(lgd,),我们允许 savefig 动态调整图形框以适合图例。
复杂图例示例
这里是一个示例复杂的图例:
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')
此代码生成一个具有复杂图例的图,该图例延伸到轴区域之外。 bbox_extra_artists 参数调整图框以容纳图例,从而显示整个图例。
注意:
自 2019 年以来,动态调整大小的代码已变为简化。现在以下命令就足够了:
plt.savefig('x.png', bbox_inches='tight')
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3