在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中会出现同样的情况。
我需要调用任何其他命令才能使其正常工作吗?
答案 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中,仅第二行的输出将与交互式功能中更改的图像一起显示。