在全息视图中,如何仅共享曲线和四边形网格之间的 x 轴?

In holoviews, how to share only the x-axis between a Curve and a Quadmesh?

感谢 this post,我可以在全息视图中仅共享两条曲线之间的 x 轴:

t = np.arange(100)
data1 = np.random.rand(100)
data2 = np.random.rand(100) + 100

curve1 = hv.Curve((t, data1), 'time', 'y1')
curve2 = hv.Curve((t, data2), 'time', 'y2')

hv.Layout(curve1 + curve2)

现在我尝试在曲线和四边形网格之间做同样的事情,但没有成功...我见过但它只使用散景api 我想使用全息视图。

没有共享x轴的代码如下:

t = np.arange(100)
data1 = np.random.rand(100)
data_mesh = np.random.rand(10, 100)

curve1 = hv.Curve((t, data1), 'time', 'y1')
curve2 = hv.QuadMesh((t, np.arange(10), data_mesh)) # What should I add here ?

hv.Layout(curve1 + curve2)

我尝试了一些选项,例如重新标记 x 轴但没有成功。我该怎么办?

任何帮助将不胜感激!谢谢

在 HoloViews 中,如果轴被认为具有相同的维度,则它们是共享的。如果维度具有相同的名称和(可选)标签,则它们被视为相同,因此仅更改标签不足以使其与另一个具有不同名称的图上的维度匹配。看 user guide 了解详情,但在这里您可以更改 QuadMesh 以声明其 x 维度与曲线中的维度相同。

import numpy as np, holoviews as hv
hv.extension("bokeh")

t = np.arange(100)
data1 = np.random.rand(100)
data_mesh = np.random.rand(10, 100)

curve1 = hv.Curve((t, data1), 'time', 'y1')
curve2 = hv.QuadMesh((t, np.arange(10), data_mesh)).redim(x='time')

curve1 + curve2