点击事件在 bokeh 图上添加数据点

7
我正在尝试设置一个bokeh图表,使用户可以单击图表以添加点。我看过这个示例,它使用BoxSelectToolRect符号添加到图表中,但我想知道如何在点击位置添加以圆为中心的符号。我也想将这些点发送回服务器端。有没有人做过类似的事情?

1
这个问题很老了,但我下面发布了我找到的解决方案,因为我正在寻找类似的东西 - 如果它能帮助其他人的话。 - Joris
1个回答

11

这对我在Bokeh版本0.12.13中有效:

from bokeh.plotting import figure
from bokeh.models import ColumnDataSource, Column
from bokeh.io import curdoc
from bokeh.events import DoubleTap

coordList=[]

TOOLS = "tap"
bound = 10
p = figure(title='Double click to leave a dot.',
           tools=TOOLS,width=700,height=700,
           x_range=(-bound, bound), y_range=(-bound, bound))

source = ColumnDataSource(data=dict(x=[], y=[]))   
p.circle(source=source,x='x',y='y') 

#add a dot where the click happened
def callback(event):
    Coords=(event.x,event.y)
    coordList.append(Coords) 
    source.data = dict(x=[i[0] for i in coordList], y=[i[1] for i in coordList])        
p.on_event(DoubleTap, callback)

layout=Column(p)

curdoc().add_root(layout)

(要运行它,请将此脚本保存为 something.py 并在 cmd 中运行:bokeh serve something.py --show)

输入图像描述


重置对我没有任何作用。Bokeh服务器版本1.1.0。 - Leevi L
2
Bokeh图形重置按钮仅重置选择、缩放、平移等操作,不会重置您的源数据。如果您想要同时重置源数据,最简单的方法是刷新页面。否则,您可以添加一个带有回调函数的按钮来重置您的源数据。 - Joris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接