gpt4 book ai didi

python - Holoviews,为 HoloMap 的每一帧叠加不同的 VLine

转载 作者:行者123 更新时间:2023-12-01 07:41:21 24 4
gpt4 key购买 nike

我正在尝试使用以下代码创建散点图以及 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')

enter image description here它按照散点图的预期工作得很好,当更改“组”维度时,会更改绘制的点,但平均值的垂直线会针对整个数据帧计算一次,我也不知道如何实现该元素的交互性。这意味着每当我更改“组”维度来计算所选“组”的平均值并像对点一样绘制它时。

最佳答案

你就快到了,你只需要将每个 VLine(以及相应计算的子集的平均值)放入 HoloMap 中即可。下面通过字典显式初始化 HoloMap。

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')
)

关于python - Holoviews,为 HoloMap 的每一帧叠加不同的 VLine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56694232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com