【问题标题】:iPython nbconvert and latex: use .eps instead of .png for plotsiPython nbconvert 和 latex:使用 .eps 而不是 .png 进行绘图
【发布时间】:2013-10-29 13:40:58
【问题描述】:

我有一个包含内联绘图的 iPython 笔记本(即它包含命令 plot(x,y))。当我发出命令 ipython nbconvert --to latex --post PDF --SphinxTransformer.author='Myself' MyNotebook.ipynb 生成的 .PDF 文件包含该图,但它已导出为 . PNG,所以看起来不太好(像素化)。如何告诉 nbconvert 将所有绘图/图形导出为 .EPS?

谢谢

【问题讨论】:

    标签: ipython


    【解决方案1】:

    首先,notebook 不负责创建绘图,而是 matplotlib,这允许将您的绘图渲染为 eps、pdf、svg 等,以包含在出版物中的高质量。

    我同意默认的内联绘图格式,即png,由于多种原因不适用于出版物。正如您在答案中发布的 github 问题中所给出的,内联后端可以配置为使用 svg 而不是 png 通过调用

    %config InlineBackend.figure_format = 'svg'
    

    在代码单元格中。 有了这个,新创建的图将是矢量的(正如马特所说,已经渲染的 png 将不会被转换!)。这些 svg 嵌入到笔记本中(现代浏览器可以呈现 svg),随后通过 nbconvert 转换为 pdf。这些 pdf 满足出版准备图的要求。但是,请注意 svg 可能非常大(与 png 相比)并且可能会显着降低笔记本的处理速度。

    您最初的问题是关于eps 图形。如上所述,matplotlib 可以渲染 eps,因此,您始终可以执行 savefig('plot1.eps') 之类的操作来创建所需的图形。这实际上是我创建出版物图形的方式(笔记本中的 png,纸中的 eps)。 假设我们会让 IPython 生成 eps 文件(嵌入但不能在浏览器中呈现)。 nbconvert 生成的tex 文件旨在与pdflatex 一起使用。如果输入 eps 文件 pdflatex 会将这些文件转换为 pdf 以包含在最终文档中。所以基本上它与 nbconvert 当前对 svgs 的作用相同。因此,没有任何好处。

    最后,我想指出的是,即使 nbconvert 生成的 tex 文件看起来很棒(尤其是使用 master 分支创建的那些),恕我直言,没有办法在不接触的情况下使用这些文件(例如,添加标题、缩放图片, ...)。因此,您始终可以将这一步的 eps 文件包含到您的论文中。

    【讨论】:

    • 您好,感谢您的帮助。我曾尝试在 iPython 笔记本中使用 = 'svg' 选项,但是当我尝试运行 nbconvert 时,我收到一条很长的错误消息,其要点是:“TypeError:Inkscape svg 到 png 的转换失败”。所以 nbconvert 仍然想将绘图转换为 .PNG?很抱歉没有对最终格式非常具体(即不一定是 .EPS):我只是想使用 iPython 来写一个完整的作业(有好的情节)
    • 你安装了inkscape吗?错误信息完全是错误的:) > 转换为 svg2pdf。
    • 啊,不,我安装了inkscape,现在它可以工作了。太好了,谢谢!
    【解决方案2】:

    NBconvert 运行您的代码。因此,如果您没有使用 SVG matplotlib 后端进行绘图,这是不可能的。 如果您这样做了,那么您需要编写一个执行 svg-> eps 的 nbconvert 预处理器并扩展相关模板以了解如何嵌入 EPS。

    【讨论】:

      【解决方案3】:

      显然这是 nbconvert 中缺少的功能。目前没有办法在最终 PDF 中获得出版质量图:https://github.com/ipython/ipython/issues/3603

      https://github.com/ipython/ipython/issues/3693

      【讨论】:

      • 其实我这里不同意,请看我的回答为什么。
      猜你喜欢
      • 2013-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      • 2014-02-01
      • 1970-01-01
      • 2021-07-10
      • 2012-04-30
      相关资源
      最近更新 更多