我可以在 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 + violin
(line_plot
使用其他数据),同时保留 w_accel_scatter
之间的选择 link,mpg_hist
和 violin
:
问题是调用 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 上将其作为问题提交。
我想 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 + violin
(line_plot
使用其他数据),同时保留 w_accel_scatter
之间的选择 link,mpg_hist
和 violin
:
问题是调用 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 上将其作为问题提交。