我是 Bokeh 和 Javascript 的新手,我正在尝试在 Bokeh 中实现一个简单的多选小部件。这个想法只是根据用户选择的一个或多个字母(A、B、C)在散点图上显示 x 和 y 数据。在用户选择一个选项之前,图表应该是空的。问题在于 Javascript 回调:当我使用 MultiSelect 小部件选择条目时没有任何反应。代码如下。
from bokeh.models import CustomJS, ColumnDataSource, MultiSelect, 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)
data_source = ColumnDataSource(data)
source = ColumnDataSource(dict(letter = [], x = [], y = []))
plot = figure()
plot.circle('x', 'y', line_width = 2, source = source)
callback = CustomJS(args = {'source': source, 'data_source': data_source},
code = """
var data = data_source
source.data = data[cb_obj.value];
""")
multiselect = MultiSelect(title = 'Choose', value = [], options = ['A', 'B', 'C'])
multiselect.js_on_change('value', callback)
layout = Column(multiselect, plot)
show(layout)
有任何想法吗 ?
相关分类