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

在python笔记本中显示后将图形保存到.pdf,python,pdf,matplotlib,ipython,Python,Pdf,Matplotlib,Ipython,有人问了一个类似的问题,但我并不满意,因为它仍然没有解决我的问题 假设我有一个函数,它执行一些计算并显示一个地物(不返回地物对象)。出于个人偏好(并且为了不保存每个绘图而跟踪绘图的外观),我在IPython中使用了%matplotlib inline。现在,在我生成了一些绘图之后,我决定保存其中一个(比如笔记本中显示的第二个,共3个),通过右键单击并选择“另存为…”可以正常工作,但只能保存为.png 有没有一种方法可以将其保存为.pdf,而无需修改函数以返回地物对象?(我知道这一点都不难,但对于

有人问了一个类似的问题,但我并不满意,因为它仍然没有解决我的问题

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

有没有一种方法可以将其保存为.pdf,而无需修改函数以返回地物对象?(我知道这一点都不难,但对于我的大多数情况来说,这是没有必要的,因为它是(比方说)20个数字中值得最终节省的1个)

我发现后端是在
%matplotlib inline
之后更改的,这就是(我猜)我无法将数字另存为.pdf的原因。解决方法似乎是使用
%config InlineBackend.close\u figures=False
plt.savefig(…)
(来自的答案)。但这样我只能保存最后一个数字,每次都必须手动关闭这些数字

如果我的问题源于糟糕的程序工作流程/编程风格,我将乐于接受关于如何做得更好的建议。如果需要代码示例,我可以提供一个。 我使用:


答复如下:

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


但是,您可以将IPython配置为以SVG格式显示图形,如下所述。它似乎还有一个PDF选项,尽管我忘记了它的作用。

简言之,不,没有一种方法可以做你想做的事。浏览器中的笔记本界面不知道该图像已连接到特定matplotlib图形对象,因此它只能为您提供要保存的png。这里有一个配置开关,可以使用SVG显示,但不是PDF。我不知道这个选项,谢谢!这对我来说已经足够了(我正在使用Latex进行写作,这对.svg也很好)。如果你把它作为回答而不是评论,我可以接受~
ipython (2.1.0)
matplotlib (1.4.1) (with Qt4Agg backend if not inline)
Python 2.7.6
MacOSX 10.9.4