Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用bokeh/flexx pyscript在Python 3.5中进行交互式浏览器绘图_Javascript_Python_Interactive_Bokeh - Fatal编程技术网

Javascript 使用bokeh/flexx pyscript在Python 3.5中进行交互式浏览器绘图

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按钮事件处理程序修改此代码,使其触发和实际更改吗?我搜索了很多网

维护人员注意:pyscript支持已被弃用,将在Bokeh 2.0中删除



我目前正在学习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')