单击时向散景图添加点

jon*_*har 6 javascript python bokeh

我正在尝试设置一个散景图,用户可以在其中单击该图以添加一个点。我看过这个例子,它使用BoxSelectToolRect绘图添加字形,但是我正在寻找一种方法来添加以单击位置为中心的圆形字形。我还想将这些点发送回服务器端。任何人都有做类似事情的经验?

Jor*_*ris 7

这在 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)
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明

  • 散景图重置按钮仅重置选择、缩放、平移等。它不会重置您的源数据。如果您也想重置源数据,最简单的方法是刷新页面。否则,您可以添加一个带有回调的按钮来重置您的源。 (2认同)