运行 python 通过在 Bokeh 中单击一个按钮来编写代码
Running python code by clicking a button in Bokeh
有没有人提供如何通过单击 Bokeh 中的按钮在 jupyter 中 运行 python 编码的示例?
UPDATE 原来的答案已经过时了。答案已更新以反映自 2016 年 1 月发布的 Bokeh 0.11
以来的变化。
从滑块演示中删除的一个完整示例,它使用了 Bokeh 0.12.4
:
的功能
from numpy import linspace, pi, sin
from bokeh.io import curdoc
from bokeh.layouts import row, widgetbox
from bokeh.models import ColumnDataSource, Slider
from bokeh.plotting import figure
# Set up data
x = linspace(0, 4*pi, 200)
y = sin(x)
source = ColumnDataSource(data=dict(x=x, y=y))
# Set up plot
plot = figure(x_range=(0, 4*pi), y_range=(-2.5, 2.5))
plot.line('x', 'y', source=source, line_width=3, line_alpha=0.6)
# Set up widgets
amplitude = Slider(title="amplitude", value=1.0, start=-5.0, end=5.0)
freq = Slider(title="frequency", value=1.0, start=0.1, end=5.1)
# Set up callbacks
def update(attrname, old, new):
# Get the current slider values
a = amplitude.value
k = freq.value
# Update the data for the new curve
source.data = dict(x=x, y=a*sin(k*x))
amplitude.on_change('value', update)
freq.on_change('value', update)
# Set up layout and add to document
inputs = widgetbox(amplitude, freq)
curdoc().add_root(row(inputs, plot, width=1200))
运行 与 bokeh serve --show <filename>
并在您的浏览器中获取以下响应式 Web 应用程序:
有没有人提供如何通过单击 Bokeh 中的按钮在 jupyter 中 运行 python 编码的示例?
UPDATE 原来的答案已经过时了。答案已更新以反映自 2016 年 1 月发布的 Bokeh 0.11
以来的变化。
从滑块演示中删除的一个完整示例,它使用了 Bokeh 0.12.4
:
from numpy import linspace, pi, sin
from bokeh.io import curdoc
from bokeh.layouts import row, widgetbox
from bokeh.models import ColumnDataSource, Slider
from bokeh.plotting import figure
# Set up data
x = linspace(0, 4*pi, 200)
y = sin(x)
source = ColumnDataSource(data=dict(x=x, y=y))
# Set up plot
plot = figure(x_range=(0, 4*pi), y_range=(-2.5, 2.5))
plot.line('x', 'y', source=source, line_width=3, line_alpha=0.6)
# Set up widgets
amplitude = Slider(title="amplitude", value=1.0, start=-5.0, end=5.0)
freq = Slider(title="frequency", value=1.0, start=0.1, end=5.1)
# Set up callbacks
def update(attrname, old, new):
# Get the current slider values
a = amplitude.value
k = freq.value
# Update the data for the new curve
source.data = dict(x=x, y=a*sin(k*x))
amplitude.on_change('value', update)
freq.on_change('value', update)
# Set up layout and add to document
inputs = widgetbox(amplitude, freq)
curdoc().add_root(row(inputs, plot, width=1200))
运行 与 bokeh serve --show <filename>
并在您的浏览器中获取以下响应式 Web 应用程序: