在 Holoviews 中使用复选框小部件来切换点图的可见性

问题描述 投票:0回答:1

我有以下代码,它给出了两组点的散点图:

import pandas as pd
import holoviews as hv

hv.extension('bokeh')

df1 = pd.DataFrame(data = {'x':range(1,5), 'y':range(1,5)})
df2 = pd.DataFrame(data = {'x':range(5,10), 'y':range(5,10)})
    
p1 = hv.Points(df1, label = 'a').opts(marker = 's')
p2 = hv.Points(df2, label = 'b').opts(marker = 'o')
options = hv.opts.Points(size = 10, show_legend = True)
                          
(p1*p2).opts(options)

我想添加复选框来切换点组的可见性。我知道我可以像这样添加复选框:

a_checkbox = pn.widgets.Checkbox(name='a', value=True)
b_checkbox = pn.widgets.Checkbox(name='b', value=True)       
                          
pn.Column(a_checkbox, b_checkbox, ((p1*p2).opts(options)))

但我知道如何让它们互动。有人可以帮忙吗?

谢谢!

python bokeh holoviews
1个回答
0
投票

图例已经这样工作了(试试吧!),但是如果您想要一个单独的复选框,这里有一种方法可以在小部件值直接映射到选项设置时起作用:

import pandas as pd, panel as pn, holoviews as hv
hv.extension('bokeh')

df1 = pd.DataFrame(data = {'x':range(1,5),  'y':range(1,5)})
df2 = pd.DataFrame(data = {'x':range(5,10), 'y':range(5,10)})
    
a_checkbox = pn.widgets.Checkbox(name='a', value=True)
b_checkbox = pn.widgets.Checkbox(name='b', value=True)       

p1 = hv.Points(df1, label = 'a').opts(marker = 's').apply.opts(alpha=a_checkbox)
p2 = hv.Points(df2, label = 'b').opts(marker = 'o').apply.opts(alpha=b_checkbox)
options = hv.opts.Points(size = 10, show_legend = True)
                          
(p1*p2).opts(options)
                          
pn.Column(a_checkbox, b_checkbox, ((p1*p2).opts(options)))

© www.soinside.com 2019 - 2024. All rights reserved.