Bokeh +交互式小部件+ PythonAnywhere

时间:2016-08-11 10:09:57

标签: python bokeh pythonanywhere

我无法使用在PythonAnywhere上运行的散景和散景小部件找到交互式Web应用程序的最小工作示例。

理想情况下,我想有一个相对复杂的函数的简单绘图(我不知道分析,但我有SymPy为我计算),当参数更改时应该重新绘制。

到目前为止,我找到的所有代码都没有这样做,例如https://github.com/bokeh/bokeh/tree/master/examples,或指散景的过时版本。

大多数文档都涉及运行散景服务器,但没有迹象表明如何使用WSGI运行(这是PythonAnywhere处理请求的方式)。为此,我尝试在Flask应用程序中嵌入Bokeh图。但是,据我所知,为了拥有交互式Bokeh小部件(应该在Python中触发一些计算),需要一个散景服务器。如果我能用其他更简单的工具获得类似的结果,我并不特别喜欢使用Flask或Bokeh。不幸的是,带有交互式小部件的Jupyter笔记本似乎不是PythonAnywhere中的一个选项。

我在Python 3.5上安装了散景0.12。

我设法在一个烧瓶应用程序中运行一个简单的散景图,但我无法使用Bokeh小部件。

2 个答案:

答案 0 :(得分:3)

以下是在pythonanywhere上使用交互式小部件的Jupyter笔记本的工作示例:

%pylab inline
import matplotlib.pyplot as plt
from ipywidgets import interact

def plot_power_function(k):
    xs = range(50)
    dynamic_ys = [x ** k for x in xs]
    plt.plot(xs, dynamic_ys)

interact(plot_power_function, k=[1, 5, 0.5])

PythonAnywhere确实预先安装了ipywidgets模块。但是,如果您没有看到交互式小部件,请确保已从bash控制台运行jupyter nbextension enable --py widgetsnbextension以使其为您的笔记本启用。启用此扩展后,您必须重新启动jupyter服务器(通过从pythonanywhere仪表板上的控制台运行进程列表中删除相关的jupyter进程)。

答案 1 :(得分:1)

从Bokeh 0.12.5开始,您可以直接在Jupyter笔记本中嵌入Bokeh服务器应用程序。这是在笔记本中使用交互式Bokeh图和小部件(由真正的python代码支持)的最佳和最强大的方法。

您可以在此演示笔记本中学习此示例:

https://github.com/bokeh/bokeh/blob/master/examples/howto/server_embed/notebook_embed.ipynb

该笔记本电脑的截屏视频如下:

enter image description here