【发布时间】:2015-09-16 15:47:13
【问题描述】:
在 python 交互式会话中,运行以下代码:
import matplotlib.pyplot as plt
plt.plot([1,2,3])
plt.show()
如何让 show() 不阻塞也不实际显示图像,而是将其存储在文件中?
我无法将代码更改为plt.savefig('figure.png')。 (有一个很好的理由,如果有兴趣,我可以解释。)
要走的路似乎是指定一个自定义后端渲染器,但到目前为止还没有成功。是否可以采用现有的后端渲染器并更改 show() 方法以保存到文件? (让我们说“figure%d.png”和 %d 到目前为止 show() 被调用的次数。)
也欢迎自定义后端渲染器旁边的其他建议。在 IPython 笔记本中,如果您执行 plt.show(),它会设法获取图像并将其放在活动代码块的下方。这是怎么做到的?
【问题讨论】:
-
我对您的需求背后的原因非常感兴趣。您能否解释一下为什么不能使用 plt.savefig() 代替?顺便说一句,你可以让 show() 不阻塞只使用 plt.show(block=False)。它会在返回提示时显示图像。
-
@Alejandro 我想发送代码并在远程服务器上执行它。如果调用 plt.show() ,我希望服务器将图像存储在本地并将其作为响应发送回调用方,以便它可以简单地显示,就好像指令在本地执行一样。
-
您也可以考虑
http://mpld3.github.io/或stackoverflow.com/questions/5515278/plot-matplotlib-on-the-web。
标签: matplotlib ipython