我试图在Jupyter笔记本中内联绘制三个散景散点图。我之前已经能够做到这一点,但在更新了Bokeh之后,我无法让它发挥作用。现在我需要做些什么吗?
from bokeh.plotting import figure, output_file, output_notebook, show
output_notebook()
x = dfList[0][1]['ValueA']
for i in range(0,3):
#Define figure
p = figure(plot_width=900, plot_height=600,
tools="pan,wheel_zoom,lasso_select,box_zoom,reset,save,undo")
#Add four datasets to figure
for t in range(4):
y = dfList[t][1]['ValueB']
plot_data = p.circle(x,y)
#Display figure in notebook
show(p)
使用上面的代码,只显示第一个图。我试过了
from bokeh.plotting import reset_output
并在每次迭代后在reset_output()
之后添加show(p)
,这会产生三个图,但它们都是在单独的浏览器选项卡中输出的,这不是我想要的。
如果我还在每次迭代中添加output_notebook()
,而不是仅仅在我的笔记本的第一个单元格中,那么我仍然只获得第一个图,其中两个迭代显示“Loading BokehJS ...”消息
我做错了什么?
答案 0 :(得分:2)
如果之前有效,我会说这是无意的未定义行为。 show
函数始终考虑到替换下一个输出单元格中的输出,因此在一个单元格中多次运行它从来就不是考虑的使用模式。无论如何,添加对支持JupyterLab的支持需要对笔记本电脑显示设备进行各种更改,这可能是您看到差异的直接原因。但是,我会说目前的行为是正确的,未来应该是什么。
做这样的事情的正确方法是以某种布局收集图,然后显示布局:
from bokeh.layouts import column
layout = column()
for x in foo:
p = figure()
layout.children.append(p)
show(layout)