在Python笔记本中显示后保存图像为.pdf

3 投票
1 回答
2790 浏览
提问于 2025-04-29 00:44

在StackOverflow上,有人问过类似的问题,具体可以查看这里这里,但我还是没找到解决我问题的方法。

假设我有一个函数,它会进行一些计算并显示一个图形(但不返回图形对象)。出于个人喜好(还有为了记录我的图形长什么样,而不需要每次都保存),我在IPython中使用了%matplotlib inline。现在,在我生成了一些图形后,我决定保存其中一个(比如说,三幅图中的第二幅),通过右键点击选择“另存为...”可以保存,但只能保存为.png格式。

有没有办法在不修改函数以返回图形对象的情况下,保存为.pdf格式呢?(我知道这并不难,但在大多数情况下,这对我来说是多余的,因为最终只需要保存大约20幅图中的1幅)。

我发现使用%matplotlib inline后,后端发生了变化,这可能是我无法将图形保存为.pdf的原因。解决方法似乎是使用%config InlineBackend.close_figures = False,然后使用plt.savefig(...)(这个答案来自这里)。但这样我只能保存最后一幅图,而且每次都得手动关闭图形。

如果我的问题是由于不好的程序工作流程或编程风格造成的,我很乐意接受改进建议。如果需要代码示例,我可以提供一个。我使用的是:

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

1 个回答

2

重新发布作为一个答案:

你不能直接从浏览器保存PDF,因为浏览器和JavaScript代码并不知道它显示的PNG图片是和某个特定的matplotlib图形有关的——实际上,它根本不知道matplotlib是什么。这些都是由运行你代码的Python内核进程来处理的。

不过,你可以设置IPython让它以SVG格式显示图形,具体的设置方法可以在文档中找到。它似乎还有一个PDF选项,不过我忘了那个具体是干什么的。

撰写回答