首页 > 解决方案 > 从 jupyter notebook 获取交互滑块以在 bokeh html 文件中工作

问题描述

你好,这是我的第一个问题(我什么都不是菜鸟),我有点紧张,不让你紧张。

我的总体目标是创建一个 30 分钟的课程(部分),让学生可以看到:

为此,我认为 Jupyter notebook 是最好的武器。出于可用性原因和不同级别的交互性,我开始考虑创建 html 文件以进行远程访问(我的管理员会在让我在学校环境中安装更多东西之前杀了我)

所以我看到了这个:

from bokeh.plotting import figure
from bokeh.resources import CDN
from bokeh.embed import file_html

plot = figure()
plot.circle([1,2], [3,4])

html = file_html(plot, CDN, "my plot")

从散景图中创建 html。

但是如何为这个独立的 html 文件提供漂亮的交互滑块。

那么如何(即使它没有意义)转换这个例子

from ipywidgets import interact
import numpy as np

from bokeh.io import push_notebook, show, output_notebook
from bokeh.plotting import figure
output_notebook()

In [ ]:

x = np.linspace(0, 2*np.pi, 2000)
y = np.sin(x)

In [ ]:

p = figure(title="simple line example", plot_height=300, plot_width=600, y_range=(-5,5))
r = p.line(x, y, color="#2222aa", line_width=3)

In [ ]:

def update(f, w=1, A=1, phi=0):
    if   f == "sin": func = np.sin
    elif f == "cos": func = np.cos
    elif f == "tan": func = np.tan
    r.data_source.data['y'] = A * func(w * x + phi)
    push_notebook()

In [ ]:

show(p, notebook_handle=True)

In [ ]:

interact(update, f=["sin", "cos", "tan"], w=(0,100), A=(1,5), phi=(0, 20, 0.1))


进入某事。像这样:https ://demo.bokeh.org/sliders

感谢您的每一条评论。对不起,我的英语不像看起来那么好,但我不像我看起来那么聪明

标签: jupyter-notebooksliderbokeh

解决方案


据我所知,没有任何直接的方法可以使用Jupyter 交互器在独立的 HTML 中进行这项工作。但是,您可以使用 Bokeh 自己的小部件进行独立输出:

https://docs.bokeh.org/en/latest/docs/gallery/slider.html

Bokeh 2.0 应该正在进行一些工作,这将允许 Jupyter 交互器与 Bokeh 服务器应用程序(不是独立输出)一起工作。


推荐阅读