Javascript 使用bokeh/flexx pyscript在Python 3.5中进行交互式浏览器绘图
维护人员注意:pyscript支持已被弃用,将在Bokeh 2.0中删除Javascript 使用bokeh/flexx pyscript在Python 3.5中进行交互式浏览器绘图,javascript,python,interactive,bokeh,Javascript,Python,Interactive,Bokeh,维护人员注意:pyscript支持已被弃用,将在Bokeh 2.0中删除 我目前正在学习Python,并尝试制作一个在浏览器上运行的交互式仪表板。我使用Bokeh进行可视化,使用flexx/pyscript进行回调交互。第一个目标是制作一个过滤数据集的按钮。我试着在上使用滑块示例 我对它进行了修改,只需单击一个按钮即可更改数据(实际过滤将在第2步进行) 页面加载,我可以单击按钮,但不会触发绘图更改。您知道如何通过使用bokeh按钮事件处理程序修改此代码,使其触发和实际更改吗?我搜索了很多网
我目前正在学习Python,并尝试制作一个在浏览器上运行的交互式仪表板。我使用Bokeh进行可视化,使用flexx/pyscript进行回调交互。第一个目标是制作一个过滤数据集的按钮。我试着在上使用滑块示例 我对它进行了修改,只需单击一个按钮即可更改数据(实际过滤将在第2步进行) 页面加载,我可以单击按钮,但不会触发绘图更改。您知道如何通过使用bokeh按钮事件处理程序修改此代码,使其触发和实际更改吗?我搜索了很多网站,但找不到一个好的例子
提前谢谢 您只需要实际更新数据源上的数据:
您的代码只是创建新的变量
x
和y
,然后立即覆盖它们。这实际上并没有更新.data
,而这正是需要发生的事情 谢谢,还有一个问题。当我按下按钮时,值会相应地改变,但随后绘图会立即重置。我只想在第二次按下按钮时发生这种情况。有什么想法吗?我不太清楚你的意思,你是说你不想立即更新数据?我认为您可以让回调来回切换一些布尔值,并且只在true
上调用触发器。例如,window.my_callback\u flag
但可能有一个比全局打开window
更好的主意当我单击时,我的绘图会短暂显示回调中指定的新数据,但随后页面会重新加载并立即再次显示原始绘图。这似乎与此问题有关。但是,此页面仅提供html解决方案此按钮问题在当前母版中已修复,并将包含在即将发布的0.12
版本中。
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')