堆栈上也有一个类似的问题herehere,但我不满意,因为它仍然无法解决我的问题。
假设我有一个函数,它执行一些计算并显示一个图形(而不返回一个图形对象)。出于个人喜好(为了跟踪我的情节而不保存每个情节),我在IPython中使用%matplotlib inline。现在,在生成一些绘图之后,我决定保存其中一个(比如笔记本中显示的三个绘图中的第二个),右键单击并选择“另存为…”可以正常工作,但只能保存为.png。
有没有一种方法可以将其保存为.pdf而不修改函数以返回figure对象?(我知道这一点也不难,但对我的大多数情况来说,这是不必要的,因为它是20位数中的1位数,最后值得节省)。
我发现在%matplotlib inline之后后端正在被更改,这就是(我猜)我不能将数字保存为.pdf的原因。解决方法似乎是使用%config InlineBackend.close_figures = Falseplt.savefig(...)(答案来自here)。但这样我只能保存最后一个图形,每次都必须手动关闭图形。
如果我的问题是由糟糕的程序工作流程/编程风格引起的,我很乐意接受关于如何做得更好的建议。如果需要一个代码示例,我可以提供一个。
我使用:

ipython (2.1.0)
matplotlib (1.4.1) (with Qt4Agg backend if not inline)
Python 2.7.6
MacOSX 10.9.4

最佳答案

作为答案重新发布:
不能直接从浏览器保存PDF,因为浏览器和JS代码不知道它显示的PNG图像与特定的matplotlib图形相关联-实际上,它根本不知道matplotlib。所有这些都由运行代码的Python内核进程处理。
但是,您可以将IPython配置为以SVG格式显示图形,如in the docs所述。它似乎也有一个PDF选项,尽管我忘记了它的作用。

10-06 10:14
查看更多