阅读量:1
要在Bokeh图表中实现动态数据过滤,可以使用CustomJS回调来实现。以下是一个简单的示例:
from bokeh.plotting import figure, show from bokeh.models import ColumnDataSource, Slider, CustomJS # 创建一个示例数据集 data = {'x': [1, 2, 3, 4, 5], 'y': [5, 4, 3, 2, 1]} source = ColumnDataSource(data=data) # 创建一个图表 plot = figure() plot.circle(x='x', y='y', source=source) # 创建一个滑块来过滤数据 slider = Slider(start=1, end=5, step=1, value=5, title='Filter') slider.js_on_change('value', CustomJS(args=dict(source=source, slider=slider), code=""" var data = source.data; var value = slider.value; var x = data['x']; var y = data['y']; // 过滤数据 var new_x = []; var new_y = []; for (var i = 0; i < x.length; i++) { if (y[i] >= value) { new_x.push(x[i]); new_y.push(y[i]); } } // 更新数据源 source.data['x'] = new_x; source.data['y'] = new_y; source.change.emit(); """)) # 显示图表 show(plot)
在这个示例中,我们创建了一个包含x和y值的数据集,并在图表中绘制了一个散点图。然后创建了一个滑块,用于过滤数据。通过使用CustomJS回调函数,我们可以在滑块值发生变化时过滤数据并更新图表。