我可以在 Holoviews 中使用 link_selections 和组合图吗?

Can I use link_selections with combined plots in Holoviews?

我想 link 选择多个元素,其中之一实际上是 'Overlay'(通常是 plot1*plot2)。但是,我一直无法让它工作。

实际上,在初始化后 link_selections 是通过将包含共享同一数据集的元素的布局作为参数传递来设置的。例如,查看 Holoviews 在 the user guide:

中提供的示例
w_accel_scatter = hv.Scatter(autompg_ds, 'weight', 'accel')
mpg_hist = histogram(autompg_ds, dimension='mpg', normed=False).opts(color="green")
violin = hv.Violin(autompg_ds, [], 'hp')

mpg_ls = link_selections.instance()    
mpg_ls(w_accel_scatter + mpg_hist + violin)

在我的例子中,我想显示 w_accel_scatter*line_plot + mpg_hist + violinline_plot 使用其他数据),同时保留 w_accel_scatter 之间的选择 link,mpg_histviolin

问题是调用 mpg_ls() 实际上会触发显示作为参数传递的内容,显然 mpg_ls(w_accel_scatter*other_plot + mpg_hist + violin) 不会起作用。

顺便说一句,我在笔记本中工作并使用散景后端。任何帮助将不胜感激!

我不确定你所说的“calling mpg_ls() actually triggers the display of what is passed as an argument”是什么意思。将对象作为单元格的值返回是触发显示的原因,而不是 mpg_ls,因此您应该能够在 mpg_ls 调用后继续工作。您只需要捕获 mpg_ls 调用的结果,然后您就可以使用它,直到最终得到您想要显示的内容。

在任何情况下,因为当您执行 mpg_ls() 时不应立即显示任何内容,您可以将您想要的每个对象 link 独立地传递给 mpg_ls,link编辑每个你想要的link,然后将它们全部放入你想要的任何叠加层或布局中。

ETA 正是这样做的一个例子:

mpg_ls = link_selections.instance()
other_plot = hv.Curve(([2000,4000,5000], [10,15,25])).opts(color="red")
mpg_ls(w_accel_scatter)*other_plot + mpg_ls(mpg_hist) + mpg_ls(violin)

这里我们特意link只涉及那些相互关联的情节,而不是不相关的other_plot。我们应该在文档中阐明如何做到这一点,因为它并不明显!另外,我希望 mpg_ls(w_accel_scatter*other_plot + mpg_hist + violin) 可以工作,我将在 HoloViews 上将其作为问题提交。