我需要在Bokeh图中获取所选数据点的索引,这需要是我的Web应用程序中另一个函数的输入。
我正在使用Bokeh的Taptool CustomJS Callback。但是,除了'console.log'之外,我找不到获取所选点的实际索引的方法。有没有办法将此索引返回到JavaScript之外?
以下是我的代码。我是Javascript和Bokeh的新手。感谢您提前提供任何帮助。
codes = """
var index_selected = source.selected['1d']['indices'][0];
source.trigger('change');
console.log(index_selected);
"""
taptool.callback = CustomJS(args=dict(source=source),code = codes)
答案 0 :(得分:0)
以下示例绘制了两个三角形。通过点击三角形,可以打印相应的索引。该示例不使用CustomJS。
from bokeh.models import ColumnDataSource
from bokeh.plotting import figure
from bokeh.io import curdoc
def my_tap_handler(attr,old,new):
index = source.selected.indices
print(index)
source = ColumnDataSource(data=dict(
x=[[1,2,3],[7,8,8,]],
y=[[2,1,3],[6,8,7]]
))
p = figure(tools="tap")
renderer = p.patches('x', 'y', source=source)
renderer.data_source.on_change("selected", my_tap_handler)
curdoc().add_root(p)
答案 1 :(得分:0)
这适用于multi_line:
selected_src = ColumnDataSource(dict(indices=[])
def handle_selection_change(_attr, # should be 'data'
old_indices,
new_indices):
...
selected_src.on_change('data', handle_selection_change)
taptool.callback = CustomJS(
args=dict(source=source, selected=selected_src),
code = """
selected.data = { "indices" : source.indices.selected };
""")