Bokeh选择要更新绘图的小工具



我正在尝试构建一个网格图,该图基于使用Bokeh从"选择"小部件中选择的值进行更新。该图形可以工作,但小部件和图形之间没有交互。我不知道该怎么做。目标是使用"选择"来更新dfPlot,然后执行其余步骤。

以下是我目前所拥有的:

output_file('layout.html')
select = Select(title="Option:", options= list(dfExpense['Ident'].unique()), value= "VALUE")
def update_plot(attr, old, new):
dfPlot = dfExpense[dfExpense['Ident'] == select.value]
select.on_change('value', update_plot)
d = []
for x in dfPlot['Account'].unique():
d.append(f's_{x}')
plt = []
for i, x in enumerate(dfPlot['Account'].unique()):
dftemp = dfPlot[dfPlot['Account']==gl]
source1 = ColumnDataSource(dftemp)
d[i] = figure(plot_width = 250, plot_height = 250)
d[i].circle('X', 'Amount', source = source1)
plt.append(d[i])

grid= gridplot([i for i in plt], ncols = 6)
l = row(grid, select)
show(l)
curdoc().add_root(l)

谢谢!

其他人可能会给你一个更好的答案。我只想说,我认为你可能做了完全错误的事情(我在开始与Bokeh合作时也做了同样的事情(。

在与Bokeh有了一些经验后,我的理解如下,因为它与您的问题有关:

  • 使用curdoc制作基于交互式小部件的Bokeh绘图意味着您使用Python与绘图交互,这意味着您必须使用Bokeh服务器,而不仅仅是使用.html文件。(作为推论,您不会使用showoutput file(https://docs.bokeh.org/en/latest/docs/user_guide/server.html
  • 您仍然可以制作一个独立的.html文件,并使其具有滑块等交互式小部件,但您必须编写一些Javascript。您很可能希望通过在Bokeh中使用CustomJS来实现这一点,这使得它相对容易。https://docs.bokeh.org/en/latest/docs/user_guide/interaction/callbacks.html

我也遇到了类似的问题,希望在不使用Python-Bokeh服务器的情况下进行交互。CustomJS最终很好地满足了我的需求,尽管我是Javascript的新手,但它们让它变得很容易(好吧,尤其是如果你的问题与示例类似,否则可能会很棘手,但仍然不是很难(。

最新更新