使用Select小部件和CustomJS尝试更新Bokeh源时遇到一些麻烦。在这种情况下,CustomJS是强制性要求,因此无法使用def:函数。下面的代码返回了数据可视化,但是没有刷新,因为我想是JS代码编写不正确,并且我无法调试它(如果有人知道如何,请提供确实是我能得到的最佳答案)。 >
主要思想是基于在选择小部件上选择的值来过滤我的源。
任何想法?
source = ColumnDataSource(data=dict( x=gx, y=gy, recty=recty, colors=colors, filter_info= filter_info)) select = Select(title="Option:", value="All", options=["All", "1", "2", "3", "4", "5", "6+"]) renderer_source = source # Add the slider code = """ var value_filter_info = cb_obj.value; if value_assignments == 'All' { new_source_data['x'] = source.data['x']; new_source_data['y'] = source.data['y']; new_source_data['recty'] = source.data['recty']; new_source_data['colors'] = source.data['colors']; } else { new_source_data['x'] = source.data['x'][source.data['filter_info']==value_filter_info]; new_source_data['y'] = source.data['y'][source.data['filter_info']==value_filter_info]; new_source_data['recty'] = source.data['recty'][source.data['filter_info']==value_filter_info]; new_source_data['colors'] = source.data['colors'][source.data['filter_info']==value_filter_info]; } renderer_source.data= new_source_data; renderer_source.change.emit(); """ callback = CustomJS(args=dict(source=source, renderer_source=renderer_source), code=code) select.js_on_change('value', callback) p = figure(plot_width=1200, plot_height=400, x_range=(0,100), y_range=(0,1000)) p.rect(x='x', y='recty', width=1, height=1, color='colors', source=renderer_source, line_color=None, fill_alpha=1, width_units="data", height_units="data") plot_layout = column(select,p) show(plot_layout) output_notebook()
非常感谢!
使用Select小部件和CustomJS尝试更新Bokeh源时遇到一些麻烦。在这种情况下,CustomJS是强制性要求,因此无法使用def:函数。以下...
因此,我找到了可以从美学,程序和视觉上改善的解决方案,但至少可以显示出结果。