具有 '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}
我正在使用 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}