Python 3.5 中的交互式浏览器绘图使用 bokeh/flexx pyscript
Interactive browser plot in Python 3.5 using bokeh/flexx pyscript
维护人员注意事项: pyscript 支持已弃用,并将在 Bokeh 2.0 中删除
我目前正在学习 Python 并尝试制作一个在浏览器上运行的交互式仪表板。我使用 Bokeh 进行可视化,使用 flexx/pyscript 进行回调交互。第一个目标是制作一个过滤数据集的按钮。我尝试在
上使用滑块示例
http://docs.bokeh.org/en/0.11.1/docs/user_guide/interaction.html
我将其修改为只需单击一个按钮即可更改数据(实际过滤将是第 2 步)。
x = [1,2,3] # dummy data
y = [4,5,6] # dummy data
# output to static HTML file
# output_file("sample.html", title="sample")
source = ColumnDataSource(data=dict(x=x, y=y))
# create a new plot with a title and axis labels
plot = Figure(plot_width=400, plot_height=400)
plot.line('x', 'y', source=source, line_width=3, line_alpha=0.6)
def callback(source=source):
data = source.get('data')
f = cb_obj.get('value')
x, y = data['x'], data['y']
x = [0.9,0.8,0,7]
y = [1,2,3]
source.trigger('change')
button = Button(callback=CustomJS.from_py_func(callback))
button.on_click(source)
layout = vform(button, plot)
show(layout)
页面已加载,我可以单击按钮,但未触发绘图中的更改。您知道如何修改此代码,以便它通过使用散景按钮事件处理程序来触发和实际更改吗?我搜索了很多网站,但找不到一个很好的例子。
提前致谢!
您只需要在数据源上实际更新数据:
def callback(source=source):
data = source.get('data')
f = cb_obj.get('value')
data['x'] = [0.9, 0.8, 0,7]
data['y'] = [1, 2, 3 ]
source.trigger('change')
您的代码只是创建 new 变量 x
和 y
,然后立即覆盖它们。这实际上并没有更新 .data
这是需要发生的事情。
维护人员注意事项: pyscript 支持已弃用,并将在 Bokeh 2.0 中删除
我目前正在学习 Python 并尝试制作一个在浏览器上运行的交互式仪表板。我使用 Bokeh 进行可视化,使用 flexx/pyscript 进行回调交互。第一个目标是制作一个过滤数据集的按钮。我尝试在
上使用滑块示例http://docs.bokeh.org/en/0.11.1/docs/user_guide/interaction.html
我将其修改为只需单击一个按钮即可更改数据(实际过滤将是第 2 步)。
x = [1,2,3] # dummy data
y = [4,5,6] # dummy data
# output to static HTML file
# output_file("sample.html", title="sample")
source = ColumnDataSource(data=dict(x=x, y=y))
# create a new plot with a title and axis labels
plot = Figure(plot_width=400, plot_height=400)
plot.line('x', 'y', source=source, line_width=3, line_alpha=0.6)
def callback(source=source):
data = source.get('data')
f = cb_obj.get('value')
x, y = data['x'], data['y']
x = [0.9,0.8,0,7]
y = [1,2,3]
source.trigger('change')
button = Button(callback=CustomJS.from_py_func(callback))
button.on_click(source)
layout = vform(button, plot)
show(layout)
页面已加载,我可以单击按钮,但未触发绘图中的更改。您知道如何修改此代码,以便它通过使用散景按钮事件处理程序来触发和实际更改吗?我搜索了很多网站,但找不到一个很好的例子。
提前致谢!
您只需要在数据源上实际更新数据:
def callback(source=source):
data = source.get('data')
f = cb_obj.get('value')
data['x'] = [0.9, 0.8, 0,7]
data['y'] = [1, 2, 3 ]
source.trigger('change')
您的代码只是创建 new 变量 x
和 y
,然后立即覆盖它们。这实际上并没有更新 .data
这是需要发生的事情。