【问题标题】:save figure to .pdf after displaying in python notebook在 python 笔记本中显示后将图形保存为 .pdf
【发布时间】:2014-12-17 19:58:18
【问题描述】:

在 Stack 上提出了类似的问题 herehere,但我不满意,因为它仍然没有解决我的问题。

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

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

我发现在%matplotlib inline 之后后端正在更改,这(我猜)是我无法将数字保存为 .pdf 的原因。解决方法似乎是使用%config InlineBackend.close_figures = Falseplt.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


【解决方案1】:

作为答案转发:

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

但是,您可以将 IPython 配置为以 SVG 格式显示图形,如 in the docs 所述。它似乎也有一个 PDF 选项,虽然我忘记了它是做什么的。

【讨论】:

    猜你喜欢
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 2016-12-20
    • 2015-05-23
    • 2020-04-16
    • 2013-10-16
    • 1970-01-01
    相关资源
    最近更新 更多