在Bokeh中结合使用JavaScript和Python代码来增强图表的交互能力可以通过自定义回调函数来实现。以下是一个简单的示例:
from bokeh.plotting import figure, show
from bokeh.models import CustomJS, Button
# 创建一个简单的图表
p = figure()
p.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 5])
# 创建一个按钮,点击按钮时改变图表数据
button = Button(label="Click me")
# 创建一个JavaScript回调函数
callback = CustomJS(args=dict(source=p), code="""
var data = source.data;
var x = data['x'];
var y = data['y'];
for (var i = 0; i < x.length; i++) {
y[i] = Math.pow(x[i], 2);
}
source.change.emit();
""")
# 将JavaScript回调函数与按钮关联
button.js_on_click(callback)
# 将按钮添加到图表中
show(p)
在这个例子中,我们创建了一个简单的折线图表,然后创建了一个按钮,点击按钮时会触发一个JavaScript回调函数,这个函数会改变图表的数据,将y值替换为x值的平方。最后,我们将按钮添加到图表中并显示出来。
通过结合使用JavaScript和Python代码,我们可以实现更加复杂和灵活的图表交互功能,提升用户体验和数据可视化效果。