散景-在运行时使用小部件来更改图形上显示的数据

时间:2018-11-30 23:47:42

标签: python bokeh

我正在将Bokeh与Python结合使用,以从Pandas数据框创建输出。我可以将要显示的字段传递给该图;但是如果要在数据框中显示不同的字段,则必须更改代码,然后再次运行该函数。

这就是我显示图形的方式(为简单起见,我不添加数据框;它包含很多字段)

x_field = pd.data['names'].tolist()
y_field = pd.data['age'].tolist()

p=figure(plot_width=800, ploth_height=600, title="test", x_axis_label="names", y_axis_label="age", x_range=x_field)
p.xaxis.major_label_orientation = 0.78
p.vbar(top=y_field, x=x_field, width=0.5)
show(p)

我确实发现Bokeh有小部件;所以我能够创建一个单选按钮组,并将其添加到布局中

radio_group = RadioButtonGroup(labels=["test1", "test2"], active=0)
layout = row(widgetbox(radio_group), p)
show(layout)

这确实显示了小部件,但是我没有任何联系。您如何连接小部件,以便当我按下按钮时它会收到事件?

我确实在教程中找到了对update函数的引用,但从未调用过它。我也看不到你如何“刷新”一个数字。现在查看示例,这对我来说并不立即。

编辑--------------------------

我确实发现您需要使用Bokeh服务器来创建交互式图形。另一种选择是使用CustomJS在Python函数中调用JS代码;尽管该图似乎没有更新,即使正确执行了代码。

不确定这是否是Bokeh或其他问题,但我仍在寻找问题的根源。

1 个答案:

答案 0 :(得分:1)

窗口小部件仅在Bokeh服务器上使用时才能够调用更新功能。 仅当您不使用Bokeh服务器时,它们才能用于调用CustomJS回调。

this页面上,您可以找到一个更新功能的示例,该功能在用户单击按钮以及有关Bokeh服务器的更多信息时调用。