【发布时间】:2014-12-17 19:58:18
【问题描述】:
在 Stack 上提出了类似的问题 here 和 here,但我不满意,因为它仍然没有解决我的问题。
假设我有一个函数可以进行一些计算并显示一个图形(不返回图形对象)。出于个人喜好(并且为了跟踪我的情节而不保存每个情节)我在 IPython 中使用%matplotlib inline。现在,在我生成了一些图之后,我决定保存其中一个(比如笔记本中显示的 3 个中的第二个),通过右键单击并选择“另存为...”可以正常工作,但只能保存为 .png。
有没有办法将其保存为 .pdf 而无需修改函数以返回图形对象? (我知道这根本不难,但对于我的大多数情况来说,这只是不必要的,因为它是最终值得节省的,例如,20 个数字中的 1 个)。
我发现在%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
【问题讨论】:
-
简而言之,不,没有办法做你想做的事。您浏览器中的笔记本界面不知道该图像已连接到特定的 matplotlib 图形对象,因此它只能为您提供要保存的 png。有一个配置开关可以让它使用 SVG 而不是 PDF 显示。
-
我不知道这个选项,谢谢!这对我来说实际上已经足够了(我使用 Latex 进行写作,.svg 也可以)。如果您将此作为答案而不是评论发布,我可以接受~
标签: python pdf matplotlib ipython