2014-10-22 85 views
3

类似的问题,有人问栈herehere显示之后,但我不太满意,因为它仍然没有解决我的问题。保存图片为pdf在python笔记本

考虑我有一个函数,做一些计算和显示的图(不返回数字对象)。出于个人偏好(并且保持跟踪我的情节看起来像没有保存每个)我在IPython中使用%matplotlib inline。现在我生成了一些图,我决定保存其中的一个(比如显示在笔记本中的第三个),右键点击并选择另存为...,但只能作为.png工作。

有没有办法将其保存为.PDF文件,而无需修改返回一个数字对象的功能? (我知道这根本不难,但对于我的大多数情况来说,这仅仅是没有必要的,因为它最终只有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

总之,没有,没有办法做你想做的。浏览器中的笔记本界面并不知道该图像已连接到特定的matplotlib图形对象,因此它只能为您提供png来保存。有一个配置开关可以使用SVG来显示,而不是PDF。 – 2014-10-22 22:39:54

+0

我不知道这个选项,谢谢!对我来说,这实际上已经足够了(我正在使用Latex进行写作,对于.svg也是如此)。如果您将此作为答案而不是评论发布,我可以接受它 – 2014-10-24 10:03:57

回答

2

转贴作为一个答案:

不能在PDF直接从浏览器保存,因为浏览器和JS代码不知道它显示PNG图像关联与特定的matplotlib数字 - 实际上,它根本不知道matplotlib。所有这一切都由运行代码的Python内核进程处理。

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

相关问题