具有 'Select' 的 BokehAPP,用于更改不显示其中一个图的图

BokehAPP with 'Select' for changing plots not showing one of the Plots

我正在使用 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)

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

    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}