Jupyter中绘图可正常显示但保存后为空白文件的问题求助
问题原因
- Jupyter notebook 开启
%matplotlib inline后,每个单元格代码执行完成后会自动清空当前活动的matplotlib画布。如果你将绘图代码和保存代码拆分到两个不同的单元格运行,第一个单元格绘制的图像内容会在单元格执行结束后被自动释放,第二个单元格操作的是全新的空白画布,最终保存的自然就是空白文件。 - 你的绘图代码存在冗余的画布创建逻辑:先调用
plt.figure()生成了第一个空白画布,又调用plt.subplots(1)生成了第二个画布,你的图像实际绘制在第二个画布的ax对象上,后续使用全局plt.savefig可能无法匹配到正确的画布对象,也会导致保存内容异常。
解决方法
- 优先将绘图代码和保存代码放在同一个Jupyter单元格内执行,避免画布被自动清空。
- 保存时明确指定你绘制图像所用的fig对象,不要使用全局的
plt.savefig,将保存语句修改为fig.savefig(output_path, bbox_inches="tight", pad_inches=0.0)即可,只要fig对象还保留在内存中,就算跨单元格运行也能正确保存内容。 - 可以删除第一段绘图代码中冗余的
plt.figure()语句,避免生成多余的空白画布占用内存。
内容的提问来源于stack exchange,提问作者palash
相关产品推荐
相关产品推荐

