使用套索工具选择多行

时间:2018-08-07 08:40:56

标签: javascript python bokeh

我在bokeh中有一个多线图,我想使用套索工具选择一些多线。 默认情况下不起作用:套索工具不会选择任何行。

from bokeh.io import output_file, show
from bokeh.plotting import figure
from bokeh.models import MultiLine

plot = figure(plot_width=400, plot_height=400, tools="lasso_select")
renderer = plot.multi_line([[1, 2, 3, 4, 5], [0,1]], [[2, 5, 8, 2, 7], [1,0]])

selected_circle = MultiLine(line_alpha=0.5, line_color='firebrick')
nonselected_circle = MultiLine(line_alpha=1, line_color='red')

renderer.selection_glyph = selected_circle
renderer.nonselection_glyph = nonselected_circle

show(plot)

当然,问题是如何将一条线视为选定线:如果该线的一个点位于套索区域中,或者所有点都位于套索区域中,则选中该线吗?

我试图添加一些javascript代码来更改套索工具的行为,但显然多行无法类似于简单数据点:

此代码...

on_lasso = CustomJS(args=dict(), code='''
    console.log(cb_obj.selected);
''')

lasso = LassoSelectTool(callback=on_lasso)
plot = figure(plot_width=800, plot_height=600, tools=[lasso])

...告诉我cb_obj.selected由于某种原因未定义。

任何帮助将不胜感激!

PS:我使用bokeh v0.13.0

1 个答案:

答案 0 :(得分:1)

不幸的是,tap不能使用除MultiLine以外的选择方法。 为了让您有一段历史,我们在bokeh tap中实现了对MultiLine的{​​{1}}支持;参见bokeh issue #3110 in GitHub

但是,在调试模式(v0.12.2)中为lasso使用CustomJs代码 我在控制台日志中得到以下内容:

export BOKEH_DEV=1

此警告仅记录一次,请参阅code,并且容易错过。

我建议在Bokeh GitHub中打开功能请求。