导出的 pdf 中缺少 Jupyter notebook matplotlib 数字

Jupyter notebook matplotlib figures missing in exported pdf

在 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 从命令行导出为 pdf,同样的事情会出现在 pdf 中。

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

如果您将 %matplotlib notebook 更改为 %matplotlib inline,那么使用 jupyter 的 nbconvert 导出 PDF 对我来说效果很好。 %matplotlib notebook 魔法以交互式方式呈现情节,我怀疑 LaTeX 无法正确识别这种方式,而 LaTeX 在 PDF 转换期间使用。

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

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

fig.savefig("pieCharts.png")

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

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

在 PDF 中,只有第 2 行的输出将显示为在交互功能中更改的图像。