我使用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)行之后没有任何内容。
如何使用鹈鹕制作散景图?
答案 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字符用于您的简单示例)。