散景:customjs回调不与我的jupyter笔记本进行交互

时间:2018-07-07 22:20:17

标签: python callback widget slider bokeh

我正在尝试使用Bokeh使用滑块小部件创建图

我的主要问题是滑块小部件未与我的python代码交互。 我尝试了许多其他在线发布方式,但是仍然找不到解决我问题的方法。

这是我想要的以下代码: 我想根据滑块的值显示不同的线曲线。初始滑块值设置为32,我想随着滑块的移动来更新绘图。 我的猜测是customjs的回调无法正常工作,但是我无法弄清楚问题的确切来源。我已经花了很多时间(超过6个小时!),但是仍然找不到合适的解决方案。

from bokeh.layouts import row, column, widgetbox
from bokeh.models import CustomJS, Slider
from bokeh.plotting import figure, show, ColumnDataSource
from bokeh.io import curdoc, output_notebook, push_notebook, output_file

source = ColumnDataSource(data={'x': BER_log[32], 'y': v_axis })
source_ber = ColumnDataSource(data={'BER': BER_log})

update_plot = CustomJS(args=dict(source_data=source, source_ber=source_ber), code="""
var data = source_data.data;
var data_ber = source_ber.data;
var ts = tstamp_slider.value;
data['x'] = data_ber['BER'][ts]
source.change.emit();
source_ber.change.emit();
""")
tstamp_slider = Slider(start=0, end=int(oneUI/Ts), value=32, step=1, title="Time Stamp", callback=update_plot)
update_plot.args["tstamp_slider"] = tstamp_slider

voltber = figure(title='Voltage Margin', y_axis_label='Volts (V)', x_axis_label='BER',
           y_range=[v_scale.min, v_scale.max], x_range=[-50, 0])
r = voltber.line(x=source.data['x'], y=source.data['y'], line_width=3, line_alpha=0.6)

layout = column(voltber, widgetbox(tstamp_slider))

show(layout)

plot

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我观察到应该使用{}的函数,您是否尝试过使用它?像这样的东西:

enable.auto.commit

来源:https://bokeh.pydata.org/en/latest/docs/gallery/slider.html (这是我的第一篇文章,我不知道这是否正确,请让我知道:))