首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bokeh服务器和烧瓶:提交后访问bokeh属性

bokeh服务器和烧瓶:提交后访问bokeh属性
EN

Stack Overflow用户
提问于 2018-11-29 20:45:08
回答 1查看 1K关注 0票数 1

我目前正在开发一个基于烧瓶的web应用程序,我将生成的图形嵌入到单独的bokeh服务器上,运行bokeh应用程序与烧瓶应用程序在同一台机器上。( bokeh服务器是与烧瓶服务器不同的进程)

在烧瓶中,我访问/加载bokeh会话

代码语言:javascript
复制
session = pull_session(session_id=None, url='http://mybokehserver:5000/mybokeh')
script = server_session(session_id=session.id, url='http://mybokehserver:5000/mybokeh')

典型

代码语言:javascript
复制
return render_template('flask.html', title='Slider example in flask', form=form, script=script )

然后,在烧瓶中呈现页面。

这成功地显示了我的烧瓶页面中的bokeh团队的滑块示例。滑块工作正常,因此回调按预期运行。因此,在我对bokeh术语的理解中,烧瓶服务器是一个"bokeh客户机“。

现在的问题是,我如何从bokeh小部件中访问属性,比如提交表单后在烧瓶服务器应用程序中使用的滑块的值。

我已经搜索了好几天了,包括bokeh文档,但是我找不到一个例子,或者至少当我看到它的时候我没有认出它。有人能给我指明正确的方向吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-04 21:25:50

再过几天,我就找到了完成所需任务的pythonic (或bokehonic)方法:解决方案是在bokeh服务器端“给对象命名”。并在客户端声明对这些对象by_name的访问。

简化的服务器端示例如下:

代码语言:javascript
复制
from bokeh.plotting import figure, curdoc
from bokeh.layouts import gridplot
from bokeh.models import ColumnDataSource

import numpy as np

x = np.zeros(2)
y = np.zeros(2)
v_src = ColumnDataSource(data=dict(x=x, y=y)) 

fig_v = figure(plot_width=600, plot_height=300)

fig_v.y_range.name = "y_range_v" # *** giving a name

fig_v.line('x','y',source=v_src, line_width=2,name="voltage") # *** giving a name

plot = gridplot([[fig_v],], toolbar_location='above')
curdoc().add_root(plot) 

例如,现在我可以通过(烧瓶)客户端的拉出会话访问fig_v.line对象及其属性和/或fig_v.yrange对象,并修改它,如下所示:

代码语言:javascript
复制
with pull_session(session_id=None, url='http://192.168.3.1:5000/bk_serv') as session:
        script = server_session(session_id=session.id,url='http://192.168.3.1:5000/bk_serv')

        doc = session.document
        line = doc.get_model_by_name("voltage") # *** access via name
        line.data_source.data = dict(x=np.arange(len(some_x_data)), y=some_y_data)

        yrange = doc.get_model_by_name("y_range_v") # *** access via name
        yrange.start=min_somedata
        yrange.end = max_somedata

        return render_template('flask.html', form=form, script=script) 

我不确定细节,但由bokeh创建的web套接字连接负责情节的更新。

注意:上面的代码是我编写的代码的摘录。它可能不会按原样运行,但我不能发布整个作品,这篇摘录给出了重要的信息。

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

https://stackoverflow.com/questions/53547295

复制
相关文章

相似问题

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