Bokeh EditTools回调服务器

时间:2018-02-12 09:48:28

标签: bokeh

我试图了解如何使用新的Bokeh EditTools回调(例如BoxEditTool或类似)。 具体来说,我想在服务器端看到新添加的矩形的坐标,但我不知道如何做到这一点。

我正在运行以下服务器应用

def app( curdoc ):
    TOOLS = "tap"
    p = figure(title="Some Figure", tools=TOOLS)
    source = ColumnDataSource( {'xs':[1], 'ys':[1], 'width':[.1],'height':[.1]})
    r = p.rect('xs','ys','width','height', source=source)
    p.add_tools(BoxEditTool( renderers = [r]))
    def cb( attr, old, new ):
        print(r.data_source.data)
    r.data_source.on_change("selected", cb)
    curdoc.add_root(column(p))

当我选择不同的矩形时,我会从cb获得打印输出,但r.data_source.data不会改变

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您描述的行为实际上是Bokeh(0.13.0)当前发行版中的一个错误。您可以在the google groups discussion中阅读更多内容。总而言之,服务器上的数据同步存在问题,已解决该问题并将其合并到dev build(1.0.0dev5),但尚未合并到官方发行版(预计于9月中旬发布)。

如果您想安装最新的开发版本,则可以使用conda

pip install --pre -i https://pypi.anaconda.org/bokeh/channel/dev/simple bokeh --extra-index-url https://pypi.python.org/simple/

或点子:

on_change

(从Bokeh installation docs复制)

请注意,Rect字形ColumnDataSource的{{1}}方法应监视'data'属性,而不是'selected'。

除此之外,您的代码段看起来不错,但是如果您想使用一个可行的示例,则可以查看here。该代码正在开发中,但是在现阶段,它可以读取图像并允许绘制ROI,以及用于序列化和加载图像的简单机制。

希望这会有所帮助!