首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用bokeh/flexx pyscript在Python3.5中的交互式浏览器绘图

使用bokeh/flexx pyscript在Python3.5中的交互式浏览器绘图
EN

Stack Overflow用户
提问于 2016-05-08 09:24:20
回答 1查看 777关注 0票数 1

维护人员的注意: pyscript支持被废弃,并将在Bokeh2.0中删除

我目前正在学习Python,并试图制作一个在浏览器上运行的交互式仪表板。我使用Bokeh进行可视化,使用flexx/pyscript进行回调交互。第一个目标是创建一个筛选数据集的按钮。我尝试使用滑块示例

guide/interaction.html

我对其进行了修改,只需单击一个按钮就可以更改数据(实际过滤将是步骤2)。

代码语言:javascript
运行
复制
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)

页面加载后,我可以单击按钮,但不会触发对情节的更改。您知道如何修改此代码以便通过使用bokeh按钮事件处理程序触发和实际更改吗?我搜索了很多网站,但我找不到一个很好的例子。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-08 10:22:34

您只需实际更新数据源上的数据即可。

代码语言:javascript
运行
复制
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')

代码只创建新的vars、xy,然后立即覆盖它们。这实际上并没有更新.data,这正是需要发生的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37098265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档