Javascript Bokeh:使用CustomJS从checkboxgroup更新散点图以过滤源

Javascript Bokeh:使用CustomJS从checkboxgroup更新散点图以过滤源,javascript,python,plot,visualization,bokeh,Javascript,Python,Plot,Visualization,Bokeh,我不太熟悉Java脚本,需要这个伟大社区的帮助 我正在尝试创建一个带有复选框组的散点图,以选择要打印的不同组。虚拟数据如下所示: from bokeh.models import CustomJS, ColumnDataSource, CheckboxGroup, Column from bokeh.plotting import figure, show import pandas as pd data = dict(letter = ['A','A','B','C','B','B','A'

我不太熟悉Java脚本,需要这个伟大社区的帮助

我正在尝试创建一个带有复选框组的散点图,以选择要打印的不同组。虚拟数据如下所示:

from bokeh.models import CustomJS, ColumnDataSource, CheckboxGroup, Column
from bokeh.plotting import figure, show
import pandas as pd

data = dict(letter = ['A','A','B','C','B','B','A','C','C','B'], 
x = [1, 2, 1, 2, 3, 2, 2, 3, 2, 3], 
y = ['10','20','10','30','10','40','10','30','10','40'])
data = pd.DataFrame(data)

source = ColumnDataSource(data)

plot = figure()
plot.circle('x', 'y', line_width = 2, source = source)
show(plot)
我想添加一个带有字母的复选框组作为可能的选择,并且只绘制所选字母的值。如果这可以通过Java脚本在HTML文档中实现,那就太好了

提前感谢。

将熊猫作为pd导入
从bokeh.layouts导入行
从bokeh.models导入ColumnDataSource、CDSView、CheckboxGroup、CustomJS、BooleanFilter
从bokeh.plotting导入图形,显示
数据=dict(字母=['A','A','B','C','B','B','A','C','C','B'],
x=[1,2,1,2,3,2,2,3,2,3],
y=['10','20','10','30','10','40','10','30','10','40']
数据=pd.DataFrame(数据)
source=ColumnDataSource(数据)
绘图=图()
活动字母='A'
f=布尔过滤器(布尔=[l==数据中l的活动字母['letter']])
uniq_字母=已排序(集合(数据['字母]))
cg=复选框组(标签=统一字母,活动=[统一字母.索引(活动字母)])
cg.js_on_变更(‘活动’,
CustomJS(args=dict(source=source,f=f),
代码=”“\
常量字母=cb_obj.active.map(idx=>cb_obj.labels[idx]);
f、 booleans=source.data.letter.map(l=>letters.includes(l));
source.change.emit();
"""))
绘图。圆('x','y',线宽=2,震源=震源,
视图=CDSView(源=源,过滤器=[f]))
显示(行(cg、绘图))

谢谢你,尤金。这正是我所需要的。逻辑似乎很简单。布尔过滤器基于复选框应用于要过滤的列,它更新活动字母集。我没有看到的是当“字母”被删除时。是否每次我选择或取消选择一个框时都会从零开始生成活动的_字母?实际上,我很快就回复了。。。它不起作用,因为代码没有更新活动字母列表,这是必要的。这是一个多选问题:(你说的“更新活动字母列表”是什么意思?如果我选中或取消选中组中的任何复选框,则绘图将为我更改。未选中任何内容-绘图为空。选中所有内容-显示完整数据。如果对你有效,你可能希望接受给出的答案-我为我做了