10

在 jupyter notebook 中生成 pdf 时,一切正常,但我想将内联数字保留在 pdf 以及笔记本中。

这是我的代码:

%matplotlib notebook
import matplotlib.pyplot as plt
import numpy as np
from IPython.display import set_matplotlib_formats
set_matplotlib_formats('png', 'pdf')

save_figures = True

x = np.arange(0, 20, 0.1)
y = np.sin(x)
plt.figure()
plt.plot(x, y)
if save_figures:
    plt.savefig('test.png')
plt.show()

这些数字显示为内联,但在 pdf 中打印的是:

<IPython.core.display.Javascript object>

<IPython.core.display.HTML object>

nbconvert如果我从 Web 导出或用于从命令行导出为 pdf,则相同的内容会出现在 pdf 中。

是否需要调用任何其他命令才能使其正常工作?

4

2 回答 2

14

如果您将 更改%matplotlib notebook%matplotlib inline,那么使用 jupyter 的 nbconvert 导出 PDF 对我来说效果很好。魔术%matplotlib notebook以交互方式渲染绘图,我怀疑 LaTeX 无法正确识别,它在 PDF 转换期间使用。

或者,如果您%matplotlib notebook出于某种原因必须使用,使用 jupyter 的 nbconvert ( jupyter nbconvert --to='html' Test.ipynb) 导出到 HTML 似乎可以保留绘图。然后,我可以从 Web 浏览器将此 HTML 文件打印为 PDF,并且该图出现在最终的 PDF 中。

于 2016-02-10T16:54:01.100 回答
4

交互问题的粗略解决方案:在交互功能中将图形保存到文件

fig.savefig("pieCharts.png")

在下一个单元格中显示一个文件:

from IPython.display import Image
Image("pieCharts.png")

在 PDF 中,仅第 2 行的输出将与交互功能中更改的图像一起显示。

于 2018-09-23T21:41:05.033 回答