Python 全息视图,为全息图的每一帧覆盖一条不同的线

Python 全息视图,为全息图的每一帧覆盖一条不同的线,python,overlay,holoviews,Python,Overlay,Holoviews,我正在尝试使用以下代码创建散点图和x轴值平均值的垂直线,但我需要一些帮助来实现它 import pandas as pd import holoviews as hv hv.extension('bokeh') df = pd.DataFrame({'group': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'], 'x': [3, 4, 5, 2, 2, 3, 5, 4, 7],

我正在尝试使用以下代码创建散点图和x轴值平均值的垂直线,但我需要一些帮助来实现它

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

df = pd.DataFrame({'group': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
                   'x': [3, 4, 5, 2, 2, 3, 5, 4, 7],
                   'y': [10, 8, 9, 3, 7, 6, 5, 4, 8]})

m1 = df['x'].mean()
line1 = hv.VLine(m1)
line1.opts(color='red', line_dash='dashed')    
ds = hv.Dataset(df, kdims=['group'], vdims=['x', 'y'])
scatter = ds.to(hv.Scatter, 'x', 'y')
scatter.opts(width=400, height=400, size=10,
             tools=['hover'], xlim=(0, 11), ylim=(0, 11))
layout = scatter * line1
hv.save(layout, 'means0.html')

它与散点图的预期一样工作良好,当更改“组”维度时,会更改绘制的点,但平均值的垂直线会为整个数据帧计算一次,我也不知道如何实现该元素的交互性。这意味着每当我更改“组”维度以计算所选“组”的平均值并按点的方式绘制时。

你几乎就到了,你只需将每条线(相应计算子集的平均值)放入全息图中。下面通过dict显式初始化全息图

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

df = pd.DataFrame({'group': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
                   'x': [3, 4, 5, 2, 2, 3, 5, 4, 7],
                   'y': [10, 8, 9, 3, 7, 6, 5, 4, 8]})
hm = hv.HoloMap({
    group: hv.Scatter(df.loc[df.group==group], 'x', 'y') * hv.VLine(df.loc[df.group==group, 'x'].mean())
    for group in df.group.unique()
})

hm.opts(
    opts.Scatter(width=400, height=400, size=10,
                 tools=['hover'], xlim=(0, 11), ylim=(0, 11)),
    opts.VLine(color='red', line_dash='dashed') 
)