在Jupiter笔记本中更新散景补丁

时间:2018-02-04 09:36:58

标签: python jupyter bokeh

我很好奇在bokeh中更新Patches字形的正确方法。 我的最小例子是:

p_blur = figure(x_range=(0, 300), y_range=(0, 300))
source = ColumnDataSource({'xs':[[100,200,300], [10,50,500,400]], 'ys':[[30,150,70], [10,500,50,50]]})
polygons = Patches(xs="xs", ys="ys",fill_color="#fb9a99")
glyph = p_blur.add_glyph(source, polygons)
nb = show(p_blur, notebook_handle=True)

如果我现在想要更新字形,例如通过

source1 = ColumnDataSource({'xs':[[10,20,30], [10,50,50,40]], 'ys':[[30,15,70], [10,50,50,50]]})
glyph.data_source = source1
push_notebook( nb )

我没有看到任何变化。但是,如果我这样做:

p_blur.renderers.remove(glyph)
glyph = p_blur.add_glyph(source1, polygons)
push_notebook( nb ) 

反映了这种变化。看起来虽然第二种方式过于苛刻。有更正确的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以将新数据分配给source.data,试试这个:

source.data = {'xs':[[10,20,30], [10,50,50,40]], 'ys':[[30,15,70], [10,50,50,50]]}
push_notebook(nb)