Python 如何在Jupyter中将图形图像导出到pdf?

Python 如何在Jupyter中将图形图像导出到pdf?,python,jupyter-notebook,jupyter,Python,Jupyter Notebook,Jupyter,我不希望将整个笔记本导出为pdf格式-我已经搜索并找到了解决该问题的方法。我只想将笔记本中的绘图导出为pdf格式。是否有Python库允许这样做 这可能不是最优雅的答案,但如果您想做的不仅仅是将每个绘图放在一个页面上,它也非常灵活。将图形导出为图像后,可以使用在单个pdf中收集所有图形。下面是一个示例,我们将图形保存为report/imgs/*.png,然后编写一个report/report.tex文件,并使用pdflatex将其编译为最终的report/report.pdf import nu

我不希望将整个笔记本导出为pdf格式-我已经搜索并找到了解决该问题的方法。我只想将笔记本中的绘图导出为pdf格式。是否有Python库允许这样做

这可能不是最优雅的答案,但如果您想做的不仅仅是将每个绘图放在一个页面上,它也非常灵活。将图形导出为图像后,可以使用在单个pdf中收集所有图形。下面是一个示例,我们将图形保存为
report/imgs/*.png
,然后编写一个
report/report.tex
文件,并使用
pdflatex
将其编译为最终的
report/report.pdf

import numpy as np
import matplotlib.pyplot as plt
创建并保存两个图像:

plt.bar(np.arange(5), np.arange(5)*2)
plt.savefig('report/imgs/fig1.png')
编写
.tex
文件以显示两个图像:

img_data = ['fig1', 'fig2']

latex_src  = '\\documentclass{article}\n'
latex_src += '\\usepackage{graphicx}\n'
latex_src += '\\graphicspath{{./imgs/}}\n'
latex_src += '\\begin{document}\n'

for image in img_data:
    latex_src += '\t\\begin{figure}[h]\n'
    latex_src += f'\t\t\\includegraphics{{{image}}}\n'
    latex_src += '\t\\end{figure}\n'

latex_src += '\\end{document}'

with open('report/report.tex', 'w', encoding = 'utf-8') as handle:
    handle.write(latex_src)

print(latex_src)
最后编译:

!cd report && pdflatex report.tex
该命令允许指定自定义模板

已在此处为LaTeX/PDF编写了完整的自定义模板:

要仅打印图形,可以对其进行修改以清空除输出单元格以外的任何部分,如下所示:

%告诉模板引擎我们要使用的输出模板。
((*扩展了'article.tplx'*))
%模板将正常设置导入等,除非我们覆盖这些部分。
%标题留空
((*块标题-*))
((*-结束块标题*))
%将作者留白
((*区块作者-*))
((*endblock author*))
%等等。
((*block maketitle*))
((*endblock maketitle*))
%不显示“输入”提示
((_提示符中的*-块-*))
((_提示符-*)中的*-endblock)
%隐藏输入单元格
((*-块输入-*))
((*-端块输入-*))
%不显示“输出”提示
((*-块输出提示-*))
((*-结束块输出\提示-*))
%让模板像往常一样渲染输出单元格
要生成LaTeX文件,请将上述内容另存为
custom_article.tplx
并运行:

jupyter nbconvert--to=latex--template=custom_article.tplx file.ipynb

要在单个命令中生成LaTeX文件和PDF,请执行以下操作:


jupyter nbconvert--to=pdf--template=custom_article.tplx file.ipynb

您在使用matplotlib吗?您可以将这些数据保存为pdf格式。谢谢。我遇到了这样一个问题:我正在尝试将多个图形导出到一个pdf。我想另一个选择是合并PDF?是的,我明白了。您可以尝试使用
子图
将所有图表合并到一个图形中,但我知道这可能会变得很麻烦。另一种选择是将它们全部保存为.pngs,然后使用
pdflatex
生成一个漂亮的报告,其中包含您喜欢的所有数字。我不知道在纯python/matplotlib中是否有一个好方法。从您的方法中汲取灵感,一个更优雅的替代方法可能是将其转换为
jupyter nbconvert
的自定义LaTeX模板。
\documentclass{article}
\usepackage{graphicx}
\graphicspath{{./imgs/}}
\begin{document}
    \begin{figure}[h]
        \includegraphics{fig1}
    \end{figure}
    \begin{figure}[h]
        \includegraphics{fig2}
    \end{figure}
\end{document}
!cd report && pdflatex report.tex