首页 > 解决方案 > 散景在按钮按下时将图形添加到布局

问题描述

我有一个主要的数字和一个名为的列表中的其他数字列表main_plot。每个绘图都连接到第一个绘图以具有相同的 x 轴缩放x_range=main_plot.x_range

我想要实现的是有一个复选框,如果它被选中,我想显示额外的图。

到目前为止,我有一个基于示例的工作代码:Bokeh: Widget to Show/Hide Figures

这里的响应使用了一个column()函数,我能够实现它:

toogle_subplots = generate_additional_subplots(main_plot)
final_grid += toogle_subplots
col = column()
checkbox = CheckboxGroup(labels=["Plot"],
                         active=[0], width=100)

callback = CustomJS(args=dict(plots=toogle_subplots, col=col, checkbox=checkbox), code="""
const children = []
for (const i of checkbox.active) {
    for (const j of plots) {
      children.push(j)
    }

}
col.children = children
""")
checkbox.js_on_change('active', callback)
final_grid += [checkbox, col]

grid = layout(final_grid, sizing_mode='stretch_width')

但是,在我的情况下,我使用网格而不是列,并且由于某种原因,列内的图比正常情况更宽。在上面的示例中,如果选中了复选框,我想添加toogle_subplots一个图形列表到网格中。它可以工作,但是当我toogle_subplots在没有 JS 回调的情况下添加到布局时,它们的宽度是不同的。

图片: 在此处输入图像描述

复选框上方的两行和下面的两行是里面的图形toogle_subplots,它们的宽度不同。他们的行为很好,他们跟随主情节的缩放和平移。

这个问题有更简单的解决方案吗?

标签: pythonpython-3.xplotbokeh

解决方案


推荐阅读