Как экспортировать изображения графиков в PDF в Jupyter? - PullRequest
0 голосов
/ 10 апреля 2020

Я не могу sh экспортировать весь блокнот в формате PDF - я искал и нашел решения для этой проблемы. Я хочу экспортировать только графики из моего блокнота в PDF. Существует ли библиотека Python, позволяющая это сделать?

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Команда Jupyter nbconvert позволяет указать пользовательский шаблон.

Майкл Гоерз написал полный пользовательский шаблон для LaTeX / PDFs здесь: https://gist.github.com/goerz/d5019bedacf5956bcf03ca8683dc5217

Чтобы печатать только графики, вы можете изменить его, чтобы исключить любые секции, кроме выходных ячеек, например:

% Tell the templating engine what output template we want to use.
((* extends 'article.tplx' *))

% Template will setup imports, etc. as normal unless we override these sections.

% Leave title blank
((* block title -*))
((*- endblock title *))

% Leave author blank
((* block author -*))
((* endblock author *))

% Etc.
((* block maketitle *))
((* endblock maketitle *))

% Don't show "input" prompt
((*- block in_prompt -*))
((*- endblock in_prompt -*))

% Hide input cells
((*- block input -*))
((*- endblock input -*))

% Don't show "output" prompt
((*- block output_prompt -*))
((*- endblock output_prompt -*))

% Let template render output cells as usual

Чтобы создать файл 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

1 голос
/ 10 апреля 2020

Это, вероятно, не самый элегантный ответ, но он также чрезвычайно гибок, если вы хотите сделать больше, чем просто разместить каждый график на странице. Вы можете использовать LaTeX, чтобы собрать все графики в одном файле 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')
plt.bar(np.arange(6), np.arange(6)**2 - 1, color = 'g')
plt.savefig('report/imgs/fig2.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)
\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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...