在python笔记本中显示后将图形保存为.pdf

时间:2014-10-22 11:20:22

标签: python pdf matplotlib ipython

Stack上有一个类似的问题herehere,但我不满意,因为它仍然无法解决我的问题。

考虑我有一个函数可以进行一些计算并显示一个图形(不返回图形对象)。出于个人喜好(并且为了跟踪我的情节而不保存每个情节)我在IPython中使用%matplotlib inline。现在,在我生成一些图之后,我决定保存其中一个(比如笔记本中显示的第二个),通过右键单击并选择“另存为...”可以正常工作,但只能作为.png。

有没有办法将其保存为.pdf而不修改函数以返回图形对象? (我知道这一点并不困难,但对于我的大多数情况来说,这只是不必要的,因为它最终会有1个,比如20个数字值得保存)。

我发现%matplotlib inline后面的后端正在改变,这是(我猜)我无法将数字保存为.pdf的原因。解决方法似乎是使用%config InlineBackend.close_figures = False并使用plt.savefig(...)(来自here的答案)。但这样我只能保存最后一个数字,每次都必须手动关闭数字。

如果我的问题来自糟糕的程序工作流程/编程风格,我很乐意接受有关如何更好地完成它的建议。如果需要代码示例,我可以提供一个代码示例。 我用:

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

1 个答案:

答案 0 :(得分:2)

重新作为答案:

您无法直接从浏览器保存PDF,因为浏览器和JS代码不知道它显示的PNG图像与特定的matplotlib图形相关联 - 事实上,它根本不知道matplotlib 。所有这些都由运行代码的Python内核进程处理。

但是,您可以配置IPython以SVG格式显示数字,如in the docs所述。它似乎也有一个PDF选项,但我忘了它的作用。