繁体   English   中英

将python回调函数转换为javascript

[英]Converting python callback function to javascript

我想要一些帮助,将我在bokeh中的回调函数从python转换为javascript。 接下来显示我的代码(我删除了大部分代码,因为它对翻译不重要。)

#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)

您的Python回调可以这样转换为JS回调(前提是它在Python中运行):

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM