出口pdf中缺少Jupyter笔记本matplotlib数字

时间:2016-02-10 01:58:40

标签: matplotlib ipython-notebook jupyter jupyter-notebook nbconvert

在jupyter笔记本中生成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中会出现同样的情况。

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

2 个答案:

答案 0 :(得分:12)

如果您将%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中。

答案 1 :(得分:0)

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

fig.savefig("pieCharts.png")

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

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

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