使用Bokeh,Jupyter Notebook和Pelican进行交互式绘图

时间:2017-05-04 22:12:02

标签: jupyter-notebook bokeh pelican

我使用Bokeh创建了一个带有交互式绘图的jupyter笔记本。 示例笔记本看起来像这样:

import pandas as pd
import numpy as np
from bokeh.plotting import figure, show
from bokeh.charts import ColumnDataSource
from bokeh.io import output_file
from bokeh.models import HoverTool 

df = pd.DataFrame(np.random.normal(0,5,(100,2)),columns=['x','y'])

output_notebook()

source = ColumnDataSource(df)
hover = HoverTool(
        tooltips=[
            ("x", "@x"),
            ("y", "@y"),
        ]
    )
p = figure(plot_width=800, plot_height=500, tools=[hover])

p.circle('x', 'y', size=7, fill_alpha=0.5,source=source)

show(p)

事情在笔记本电脑上起作用,这个数字是互动的。

我将pelican静态网站生成器与pelican-ipynb插件(https://github.com/danielfrg/pelican-ipynb)一起使用,以便将笔记本转换为html。创建html时,Bokeh图不会显示出来。我似乎无法弄清楚如何使用交互式Bokeh图获取html。我检查了html,并且在show(p)行之后没有任何内容。

如何使用鹈鹕制作散景图?

1 个答案:

答案 0 :(得分:2)

Bokeh在交互式部分(BokehJS)的客户端使用JavaScript,并且在将笔记本导出到HTML ouside Bokeh时未嵌入JS代码。

您需要使用Bokeh自己的函数将Bokeh代码导出为HTML以生成standalone HTML 要生成HTML,只需添加到您的代码中:

from bokeh.resources import CDN
from bokeh.embed import file_html 
p_html = file_html(p, CDN)

例如,请参阅this Jupyter Notebook,其中包含您的原始代码和生成的HTML(太长时间无法将其嵌入到SO中,大约45 K字符用于您的简单示例)。