Jupyter和Bokeh:在将Jupyter笔记本导出为pdf时导出散景图的解决方法

时间:2018-01-12 18:16:15

标签: python jupyter-notebook bokeh nbconvert

我希望一些沉重的Jupyter和散景用户可能有一个解决方法。所以我的Jupyter笔记本中有一堆bokeh图,我想将笔记本导出到pdf。在Jupyter Notebook文件菜单中,有一个选项可以将笔记本下载为pdf。另外 - 我的首选路线 - 是使用nbconvert.

问题是bokeh图未导出到最终的pdf文件中。 Bokeh不会将其图表导出为捕获的格式通过Latex编译pdf。相反,像matplotlib这样的包将为每个绘图生成png文件,然后这些绘图在胶乳中链接以生成pdf。

现在,当我导出笔记本时,所有文本都以pdf格式显示,但没有一个图表出现。如果我导出到html文件,那么这些图就会出现 - 但是如果我尝试打印文档,那么当然这些图会溢出页面。

有没有人为此找到了合适的解决方法?与我合作的用户仍然希望能够打印出文档并对其进行标记。

1 个答案:

答案 0 :(得分:1)

标准交互式散景图实际上是JSON的集合,以及一个JavaScript库(BokehJS),它将JSON渲染为浏览器中所需的绘图。由于PDF文档不执行JavaScript,因此永远不可能以PDF格式嵌入标准的Bokeh图。

但是,Bokeh还可以将静态版本的图形导出为PNG或SVG,这些版本可以嵌入到PDF中。请参阅用户指南中的Exporting Plots部分。您首先需要安装一些可选的依赖项(phantomJS,selenium和pillow),然后导出绘图将是这样的:

export_png(plot, filename="plot.png")

然后,特别是在笔记本中,您可以使用以下内容显示图像:

from IPython.display import Image
Image('plot.png')