首页 > 解决方案 > 使用 RadioButtonGroup、Python Bokeh 更改网格图

问题描述

亲爱的,

我有三个网格图,并试图根据单选按钮选择替换网格图。例如,如果我选择 611,那么 grid1 应该是可见的,当我选择 612 (grid2) 时应该是可见的。我一直在寻找,但无法找到解决方案。我尝试了多种方法,但没有任何效果。请帮助我指导如何做到这一点。

请在我的代码下面找到。

grid1 = gridplot([[V1_Traffic, D1_Traffic]])
grid2 = gridplot([[V2_Traffic, D2_Traffic]])
grid3 = gridplot([[V3_Traffic, D3_Traffic]])

def update_plot(attrname, old, new):

    if button_group.labels[0] == '611':
        curdoc().clear()
        curdoc().add_root(lay_out)
        # curdoc().add_root(grid)
        #lay_out = layout([[button_group]])
        show(grid1)

    if button_group.labels[1] == '612':
        curdoc().clear()
        curdoc().add_root(lay_out)
        # curdoc().add_root(grid2)
        #lay_out = layout([[button_group]])
        show(grid3)

    if button_group.labels[2] == '613':
        curdoc().clear()
        curdoc().add_root(lay_out)
        # curdoc().add_root(grid3)
        #lay_out = layout([[button_group]])
        show(grid3)


button_group = RadioButtonGroup(labels=["611", "612", "613"], active=0)
button_group.on_change("active", update_plot)


# create layout and add to curdoc
lay_out = layout([[button_group]])
curdoc().add_root(grid)
curdoc().add_root(lay_out)

谢谢你的时间。此致

标签: pythonbokeh

解决方案


亲爱的,

我已经找到了解决方案并让它发挥作用。请在我的代码下面找到。

def update_plot(attrname, old, new):

    if options[button_group.active] == '611':
        curdoc().clear()
        curdoc().add_root(lay_out)
        curdoc().add_root(grid)

    if options[button_group.active] == '612':
        curdoc().clear()
        curdoc().add_root(lay_out)
        curdoc().add_root(p2)

    if options[button_group.active] == '613':
        curdoc().clear()
        curdoc().add_root(lay_out)
        curdoc().add_root(p3)


options = ["611", "612", "613"]
button_group = RadioButtonGroup(labels=options, active=0)
button_group.on_change("active", update_plot)


# create layout and add to curdoc
lay_out = layout([[button_group]])
curdoc().add_root(grid)
curdoc().add_root(lay_out)

索引单选按钮button_group.labels[0]不起作用,因此,通过执行额外步骤对其进行修改

options = ["611", "612", "613"]
button_group = RadioButtonGroup(labels=options, active=0)

并通过调用它

if options[button_group.active] == '612'

curdoc().clear()清除页面上的所有内容并将其替换为新的网格数据。

curdoc().add_root(lay_out)显示单选按钮

curdoc().add_root(p3)显示新网格

我是编程新手。我不确定这是一个好的解决方案还是一个坏的解决方案,但目前它对我有用:)。

感谢你的宝贵时间。此致


推荐阅读