用散景保存一个curdoc

时间:2017-09-05 07:35:12

标签: bokeh

我是Bokeh的初学者,我想知道是否可以在HTML文件中保存curdoc()?我们可以以下面的小测试为例:

import numpy as np from bokeh.palettes
import RdYlGn11 as palette from bokeh.plotting
import figure from bokeh.layouts
import row, widgetbox from bokeh.models
import ColumnDataSource from bokeh.models.widgets
import Slider, TextInput, Select from bokeh.io
import curdoc, output_file, save, set_curdoc
x = np.array([-10., -8., -7., -2., 0., 1., 2., 5., 7., 9.])
y = np.array([-15., -12., -9., -5., 1., 4., 6., 7., 9., 12.])
def f(x, y, a, b):
  return a * x + b * y
z = f(x, y, -2, 3.2)
colors = np.array(palette)
task_color = np.arange(-10, 10, 10)
source = ColumnDataSource(data = dict(X = x, Y = y, Z = z, color = colors[task_color.searchsorted(z)]))
plot = figure(plot_height = 800, plot_width = 800)
plot.circle("X", "Y", size = 10, line_color = "color", fill_color = "color", source = source)
plot.text("X", "Y", text = "Z", source = source)
A = Slider(title = "First coefficient", value = -2., start = -10, end = 10, step = 1.)
B = Slider(title = "Second coefficient", value = 3.2, start = 0., end = 5., step = 0.1)
def update_data(attrname, ols, new):
  a = A.value
b = B.value
x = np.array([-10., -8., -7., -2., 0., 1., 2., 5., 7., 9.])
y = np.array([-15., -12., -9., -5., 1., 4., 6., 7., 9., 12.])
z = f(x, y, a, b)
source.data = dict(X = x, Y = y, Z = z, color = colors[task_color.searchsorted(z)])
for w in [A, B]:
  w.on_change('value', update_data)
inputs = widgetbox(A, B)
curdoc().add_root(row(inputs, plot))
curdoc().title = "My test"

1 个答案:

答案 0 :(得分:2)

这是一个Bokeh 应用程序为了运行,它无法保存,必须由Bokeh服务器执行。即如果上面的代码在文件app.py中,那么让它运行和执行的唯一方法就是运行

bokeh serve --show app.py

在您的命令行。没有办法“保存”它,以便在没有 Bokeh服务器的情况下运行。除了脚本之外还有其他方法可以指定和构建应用程序,但是要进行操作,它们都必须在Bokeh服务中运行。参见:

http://bokeh.pydata.org/en/latest/docs/user_guide/server.html

另外,如果您不需要在回调中执行真实的,实际的Python代码,您可以拥有许多高度互动的独立(即没有Bokeh服务器)图,其中包含{{1}回调。参见:

http://bokeh.pydata.org/en/latest/docs/user_guide/interaction/widgets.html#userguide-interaction-widgets