Bokeh 服务器

Bokeh 服务器

Bokeh架构有一个解耦设计,其中对象如图和字形是用Python创建的,并转换为JSON以被 BokehJS客户端库所 消费 。

然而,在 Bokeh服务器 的帮助下,可以使Python和浏览器中的对象保持同步 。 它可以用python的全部功能来响应浏览器中产生的用户界面(UI)事件。它还有助于自动将服务器端的更新推送到浏览器中的小部件或绘图。

Bokeh服务器使用用Python编写的应用代码来创建Bokeh文档。每一个来自客户端浏览器的新连接都会导致Bokeh服务器创建一个新的文档,只为这个会话。

Bokeh - 服务器

首先,我们必须开发一个应用代码,提供给客户端浏览器。下面的代码渲染了一个正弦波的线条图。在绘制的同时,还渲染了一个滑块控件来控制正弦波的频率。回调函数 update_data() 以滑块的瞬时值作为当前频率来更新 ColumnDataSource 数据。

import numpy as np
from bokeh.io import curdoc
from bokeh.layouts import row, column
from bokeh.models import ColumnDataSource
from bokeh.models.widgets import Slider, TextInput
from bokeh.plotting import figure
N = 200
x = np.linspace(0, 4*np.pi, N)
y = np.sin(x)
source = ColumnDataSource(data = dict(x = x, y = y))
plot = figure(plot_height = 400, plot_width = 400, title = "sine wave")
plot.line('x', 'y', source = source, line_width = 3, line_alpha = 0.6)
freq = Slider(title = "frequency", value = 1.0, start = 0.1, end = 5.1, step = 0.1)
def update_data(attrname, old, new):
   a = 1
   b = 0
   w = 0
   k = freq.value
   x = np.linspace(0, 4*np.pi, N)
   y = a*np.sin(k*x + w) + b
   source.data = dict(x = x, y = y)
freq.on_change('value', update_data)
curdoc().add_root(row(freq, plot, width = 500))
curdoc().title = "Sliders"

接下来,通过以下命令行启动Bokeh服务器 —

Bokeh serve –show sliders.py

Bokeh服务器开始运行,并在localhost:5006/sliders提供应用程序。控制台日志显示如下显示 –

C:\Users\User>bokeh serve --show scripts\sliders.py
2019-09-29 00:21:35,855 Starting Bokeh server version 1.3.4 (running on Tornado 6.0.3)
2019-09-29 00:21:35,875 Bokeh app running at: http://localhost:5006/sliders
2019-09-29 00:21:35,875 Starting Bokeh server with process id: 3776
2019-09-29 00:21:37,330 200 GET /sliders (::1) 699.99ms
2019-09-29 00:21:38,033 101 GET /sliders/ws?bokeh-protocol-version=1.0&bokeh-session-id=VDxLKOzI5Ppl9kDvEMRzZgDVyqnXzvDWsAO21bRCKRZZ (::1) 4.00ms
2019-09-29 00:21:38,045 WebSocket connection opened
2019-09-29 00:21:38,049 ServerConnection created

打开你喜欢的浏览器,输入上述地址。正弦波图显示如下-

Bokeh - 服务器

你可以尝试通过滚动滑块将频率改为2。

Bokeh - 服务器

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程