python - 散景选择小部件以更新绘图
问题描述
我正在尝试构建一个网格图,该图根据使用 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 有一些经验后,我的理解与您的问题有关,如下所示:
- 用于制作基于交互式小部件的 Bokeh 绘图意味着您正在使用
curdoc
Python 与绘图进行交互,这意味着您必须使用 Bokeh 服务器,而不仅仅是使用 .html 文件。(作为推论,您不会使用show
或output file
)https://docs.bokeh.org/en/latest/docs/user_guide/server.html - 您仍然可以制作一个独立的 .html 文件并使其具有像滑块这样的交互式小部件,但您必须编写一些 Javascript。您很可能希望通过
CustomJS
在 Bokeh 中使用来做到这一点,这使得它相对容易。 https://docs.bokeh.org/en/latest/docs/user_guide/interaction/callbacks.html
我有一个类似的问题,想要在不使用 Python Bokeh 服务器的情况下进行交互。 CustomJS
最终很好地满足了我的需求,即使我是 Javascript 的新手,它们也让它变得很容易(嗯,特别是如果你的问题与示例相似,否则它可能会变得很棘手,但仍然不是很困难)。
推荐阅读
- scala - Spark scala在数据框中加入数据框
- javascript - 覆盖 UTM 参数
- jms - Mule 4在最大等待时间后发布消费组件响应jms body null
- r - 阅读所有excel文件表并执行for循环
- ios - React Native iOS Release 构建停留在旧代码上,但 Debug 构建工作正常
- python - 使用另一个数据框在数据框中创建子列
- java - 共享库位于 AOSP 的什么位置?
- javascript - Redux 中的订阅 Redux 中订阅的奇怪行为
- arrays - 在 Swift 中将 NSArray 转换为数组会产生 nil 到数组值
- postgresql - 气流 initdb slot_pool 不存在