我试图了解如何使用新的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不会改变
感谢您的帮助!
答案 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
请注意,Rect字形ColumnDataSource的{{1}}方法应监视'data'属性,而不是'selected'。
除此之外,您的代码段看起来不错,但是如果您想使用一个可行的示例,则可以查看here。该代码正在开发中,但是在现阶段,它可以读取图像并允许绘制ROI,以及用于序列化和加载图像的简单机制。
希望这会有所帮助!