iPython nbconvert和latex:使用.eps而不是.png进行绘图

iPython nbconvert和latex:使用.eps而不是.png进行绘图,ipython,Ipython,我有一个iPython笔记本,其中包含一个内联绘图(即,它包含命令绘图(x,y))。当我发出命令ipython nbconvert--to latex--post PDF--SphinxTransformer.author='Illy'MyNotebook.ipynb时,生成的.PDF文件包含该图形,但它已导出到.PNG,因此看起来不太好(像素化)。如何告诉nbconvert将所有绘图/图形导出到.EPS 谢谢NBconvert不会运行您的代码。因此,如果没有使用SVG matplotlib后端

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


谢谢

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

显然,这是nbconvert中缺少的功能。目前没有在最终PDF中获取出版物质量图的方法:


首先,笔记本电脑不负责创建绘图,而是matplotlib,这样可以将绘图以高质量的eps、pdf、svg等形式呈现在出版物中

我同意默认的内联打印格式,即
png
,由于多种原因,不适合用于出版物。正如您在回答中发布的github问题中所述,可以通过调用

%config InlineBackend.figure_format = 'svg'
在代码单元中。 这样,新创建的绘图将是矢量的(正如马特所说,已经渲染的PNG将不会被转换!)。这些SVG被嵌入笔记本中(SVG可以通过现代浏览器呈现),随后由nbconvert转换为PDF。这些PDF满足出版准备图的要求。但是,请注意,SVG可能非常巨大(与PNG相比),可能会显著降低笔记本电脑的处理速度

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


最后,我想指出的是,尽管nbconvert生成的tex文件看起来很棒(尤其是使用主分支创建的文件),但是如果不触摸(例如添加字幕、缩放图像等),就无法使用这些文件。因此,您可以在这一步将eps文件包括在您的论文中。

实际上,我不同意这一点,请查看我的答案。您好,谢谢您的帮助。我曾尝试在iPython笔记本中使用='svg'选项,但当我尝试运行nbconvert时,我收到一条很长的错误消息,其要点是:“TypeError:Inkscape svg到png的转换失败”。所以nbconvert仍然想将绘图转换为.PNG?很抱歉没有非常具体地说明最终的格式(即not necesarly.EPS):我只是想使用iPython在中编写整个作业(具有良好的绘图),您是否安装了inkscape?错误消息完全错误:)>转换是svg2pdf.aah,不,我安装了inkscape,现在它可以工作了。太好了,谢谢!