0

我正在使用 Bokeh Server 构建一个交互式绘图,该绘图随选项列表 ['A','B','C'] 的变化而变化。它工作正常。它的默认值为“A”,并且图表显示良好。如果我从“A”切换到“B”或“C”,它也可以正常工作。如果我从“B”切换到“C”,它也可以正常工作。问题是,当我从“C”切换到“B”时……没有显示任何情节……我只是想不通为什么所有其他切换命令都能正常工作,而只有这个不能…… ..


    #Initialize the df for ploting using a initial Option Selection as 'A'
    df_plot=df_mod.loc['A']

    source=ColumnDataSource(df_plot)

    p = figure(title=titulo,x_range=list(df_plot.index))

    p.vbar_stack(list_columns_bar, x='Column_x', width=0.9,source=source)

    select_conjunto = Select(title='Title',
                             options=list_options, value='A')

    def switch_plot(attr,old,new):
        option = select_option.value

        data=source.data

        df_plot=df_mod.loc[option]

        p.x_range.factors=list(df_plot.index)

        ### Categorical x for my data is stored in index of df_plot
        data['Column_x']=df_plot.index

        ### Updating all columns of data from the new df_plot
        for i in df_plot.columns:

            data[i]=df_plot[i]

    select_option.on_change('value',switch_plot)

4

1 回答 1

0

解决了用 for 循环替换 dict 理解的问题。新的回调函数如下所示:

    def switch_plot(attr,old,new):
        option = select_option.value

        df_plot=df_mod.loc[option]

        p.x_range.factors=list(df_plot.index)

        ### Updating data with dict comprehension
        source.data={i:df_plot.reset_index()[i] for i in df_plot.reset_index().columns}

于 2019-09-13T01:19:13.807 回答