将python回调函数转换为javascript
我想得到一些帮助,将我在bokeh中的回调函数从python翻译成javascript。接下来显示我的代码(我删除了大部分代码,因为它对翻译不重要。)将python回调函数转换为javascript,javascript,python,bokeh,Javascript,Python,Bokeh,我想得到一些帮助,将我在bokeh中的回调函数从python翻译成javascript。接下来显示我的代码(我删除了大部分代码,因为它对翻译不重要。) 您的Python回调可以像这样转换为JS回调(前提是它在Python中工作): 到目前为止,您尝试了什么?您遇到了什么困难?谢谢您的回复。但它不起作用。我得到了默认的绘图,但当我点击按钮时,绘图没有改变。我查看了控制台,当我点击一个按钮时,它给出了以下错误“x_df未定义”。你知道我能做些什么来解决这个问题吗?我忘了把你的数据源添加到回调中。请参
您的Python回调可以像这样转换为JS回调(前提是它在Python中工作):
到目前为止,您尝试了什么?您遇到了什么困难?谢谢您的回复。但它不起作用。我得到了默认的绘图,但当我点击按钮时,绘图没有改变。我查看了控制台,当我点击一个按钮时,它给出了以下错误“x_df未定义”。你知道我能做些什么来解决这个问题吗?我忘了把你的数据源添加到回调中。请参阅更新的代码。但是您得到的错误是不同的,在看到完整的代码之前,我不能说它来自哪里。没有完整的代码概述是很困难的。请始终提供最小但可运行的代码。代码现在可以运行了。我只需要对你的代码做一个更正。如果是“color\u mapper.low=Math.min(data\u points.data['freq']),则应该是“color\u mapper.low=Math.min.apply(null,data\u points.data.freq)”,最大值也应该是相同的。非常感谢你的帮助。@ R.Reo,如果这个答案有帮助的话,请考虑接受/接受。谢谢你的提醒。
#returns a CDS of a dataframe based on one parameter
def create_df(option):
return ColumnDataSource(incident_df)
all_df = create_df('all')
critical_df = create_df('1')
high_df = create_df('2')
avg_low_df = create_df('3/4')
data_points = create_df('all')
color_mapper=LinearColorMapper(palette=RdBu7,low=data_points.data['freq'].min(),high=data_points.data['freq'].max())
radio_button_group = RadioButtonGroup(
labels=["All Priorities", "1 - Critical", "2 - High", "3/4 - Average/Low"], active=0)
#Define the callback function
def callback(attr, old, new):
if radio_button_group.active == 0:
new_cds = all_df
if radio_button_group.active == 1:
new_cds = critical_df
if radio_button_group.active == 2:
new_cds = high_df
if radio_button_group.active == 3:
new_cds = avg_low_df
data_points.data = new_cds.data
color_mapper.low=min(data_points.data['freq'])
color_mapper.high=max(data_points.data['freq'])
radio_button_group.on_change('active', callback)
from bokeh.models import CustomJS
code = """
if (radio_button_group.active == 0)
new_cds = all_df
if (radio_button_group.active == 1)
new_cds = critical_df
if (radio_button_group.active == 2)
new_cds = high_df
if (radio_button_group.active == 3)
new_cds = avg_low_df
data_points.data = new_cds.data
color_mapper.low = Math.min.apply(null, data_points.data['freq'])
color_mapper.high = Math.max.apply(null, data_points.data['freq'])
"""
callback = CustomJS(args = dict(data_points = data_points,
color_mapper = color_mapper
radio_button_group = radio_button_group
all_df = all_df,
critical_df = critical_df,
high_df = high_df,
avg_low_df = avg_low_df),
code = code)
radio_button_group.js_on_change('active', callback)