我有以下代码,它给出了两组点的散点图:
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)))
但我知道如何让它们互动。有人可以帮忙吗?
谢谢!
图例已经这样工作了(试试吧!),但是如果您想要一个单独的复选框,这里有一种方法可以在小部件值直接映射到选项设置时起作用:
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)))