如何刷新Bokeh文档

时间:2016-08-16 18:42:58

标签: bokeh

我想刷新散景文档,以便用新的替换旧的图。 但是,现在我只是将新的图表附加到文档中,以便旧的图表不会消失。

#myfile.py
from bokeh.plotting import curdoc, figure
doc = curdoc()
p1 = figure(width=1500, height=230, active_scroll="wheel_zoom")
doc.add_root(p1)
doc.clear()
p2 = figure(width=1500, height=500, active_scroll="wheel_zoom")
doc.add_root(p2)

这导致第二个绘图显示在第一个绘图之后,尽管我正在寻找的预期行为是替换第一个绘图的第二个绘图。我该如何解决这个问题?我通过散景服务--show myfile.py

在散景服务器上运行它

2 个答案:

答案 0 :(得分:8)

实现此类目标的最佳方法是使某种类型的顶级布局(例如rowcolumn)具有您要在其中替换的内容。然后当你想要替换东西时,保留布局容器,但是改变它的children属性的值:

from bokeh.plotting import curdoc, figure
from bokeh.layouts import row

doc = curdoc()

p1 = figure(width=1500, height=230, active_scroll="wheel_zoom")

layout = row(p1)
doc.add_root(layout)

p2 = figure(width=1500, height=500, active_scroll="wheel_zoom")

layout.children[0] = p2

您可以在Crossfilter example中看到类似的技巧。

答案 1 :(得分:4)

如果有多个元素(例如,小部件,更多图形,行等),任何人都在努力设置子画面布局,可以通过将元素包装在布局中并指定子属性来实现。直接:

p2 = figure(width=1500, height=500, active_scroll="wheel_zoom")
p3 = figure(width=1500, height=500, active_scroll="wheel_zoom")
new_layout = row(p2, p3)
layout.children = new_layout.children