Python HoloView中柱可视化的下拉菜单

Python HoloView中柱可视化的下拉菜单,python,holoviews,Python,Holoviews,我有一个带有时间索引和一些列的数据帧,类似于 dt, col1, col2, col3 12, 0.9, 0.3, 0.1 13, 0.9, 0.3, 0.2 14, 2.9, 0.4, 0.1 15, 0.1, 0.3, 0.7 我可以创建一条Holoviews曲线,每列都没有问题。是否可以使用下拉菜单在[col1,col2,col3]之间进行选择来生成图形?HoloView主要用于轻松绘制所谓的“整齐”或长数据帧,因此,为了充分利用HoloView的功能,您需要将数据转换为该格式。pd.m

我有一个带有时间索引和一些列的数据帧,类似于

dt, col1, col2, col3
12, 0.9, 0.3, 0.1
13, 0.9, 0.3, 0.2
14, 2.9, 0.4, 0.1
15, 0.1, 0.3, 0.7

我可以创建一条Holoviews曲线,每列都没有问题。是否可以使用下拉菜单在[col1,col2,col3]之间进行选择来生成图形?

HoloView主要用于轻松绘制所谓的“整齐”或长数据帧,因此,为了充分利用HoloView的功能,您需要将数据转换为该格式。
pd.melt
函数对于将“宽”数据转换为整齐的数据非常有用。根据你的例子,你可以这样做

df = pd.DataFrame({'dt': range(10), 'col1': np.random.rand(10),
                   'col2': np.random.rand(10), 'col3': np.random.rand(10)})
tidy_df = pd.melt(df, id_vars='dt', var_name='column', value_name='value')
ds = hv.Dataset(tidy_df)
ds.to(hv.Curve, 'dt', 'value', 'column')
或者,也可以手动创建全息图:

df = pd.DataFrame({'dt': range(10), 'col1': np.random.rand(10),
               'col2': np.random.rand(10), 'col3': np.random.rand(10)})
hv.HoloMap({col: hv.Curve(df, 'dt', col) for col in ['col1', 'col2', 'col3']},
           kdims='Column')

综上所述,您的用例是一个非常常见的用例,HoloView的下一个版本将包括使这类事情变得更简单的方法,因此,请在pandas数据帧落地后查看有关使用pandas数据帧的用户指南。

谢谢,philippjfr!我注意到的一件事是,如果数据帧的格式整齐,但变量的比例不同,那么曲线图使用的是最大的比例,因此曲线图没有那么有用。您可以将
%%opts Curve{+framewise}
添加到单元格顶部,使其在选择下拉值时调整范围。