Matplotlib导出多折线图时外置图例被截断问题求助
问题原因
你将图例通过bbox_to_anchor放置在画布绘图区域外时,matplotlib的savefig方法默认仅导出绘图区域范围内的内容,超出边界的图例就会被截断。
可行修复方案
方案1(最简便,推荐)
在savefig方法中添加bbox_inches='tight'参数,会自动计算并拓展画布边界,将所有超出绘图区域的元素(如外置图例)全部包含在导出的图片中。
修改对应代码行即可:
plt.savefig('Figure.jpg',dpi=300, bbox_inches='tight')
方案2 手动预留右侧空白
在调用savefig前添加subplots_adjust方法,手动缩小绘图区域的右边界,给右侧图例预留足够空间:
plt.legend(bbox_to_anchor=(1.20, 0.6),loc='best') # 新增以下行,right参数可根据实际显示效果调整 plt.subplots_adjust(right=0.78) plt.savefig('Figure.jpg',dpi=300)
方案3 启用自动布局
创建画布时开启constrained_layout参数,会自动调整绘图区域、坐标轴标签、图例等所有元素的位置,避免出现元素超出边界被截断的问题:
修改画布创建代码行即可:
plt.figure(figsize=(7,5), constrained_layout=True)
内容的提问来源于stack exchange,提问作者Kanchon Gharami
相关产品推荐
相关产品推荐

