将绘图保存到图像文件而不是使用 Matplotlib 显示它

新手上路,请多包涵

这将在 GUI 中显示该图:

 import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [1, 4, 9])
plt.show()

但是我该如何将图形保存到文件中(例如 foo.png)?

原文由 Homunculus Reticulli 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

使用 matplotlib.pyplot.savefig 时,可以通过扩展名指定文件格式:

 from matplotlib import pyplot as plt

plt.savefig('foo.png')
plt.savefig('foo.pdf')

这分别给出了光栅化或矢量化输出。此外,有时图像周围会出现不需要的空白,可以使用以下方法将其删除:

 plt.savefig('foo.png', bbox_inches='tight')

请注意,如果显示绘图,则 plt.show() 应遵循 plt.savefig() ;否则,文件图像将为空白。

原文由 Hooked 发布,翻译遵循 CC BY-SA 4.0 许可协议

正如其他人所说, plt.savefig()fig1.savefig() 确实是保存图像的方法。

但是我发现在某些情况下 总是显示数字。 (例如,Spyder 有 plt.ion() :交互模式 = On。)我通过强制图形窗口关闭来解决这个问题:

plt.close(figure_object)

(参见 文档)。这样我在一个大循环中就没有一百万个开放数字。用法示例:

 import matplotlib.pyplot as plt
fig, ax = plt.subplots( nrows=1, ncols=1 )  # create figure & 1 axis
ax.plot([0,1,2], [10,20,3])
fig.savefig('path/to/save/image/to.png')   # save the figure to file
plt.close(fig)    # close the figure window

如果需要,您应该可以稍后重新打开该图 fig.show() (我自己没有测试)。

原文由 Demis 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题