我有一个带有时间索引和一些列的数据框,类似于
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] 之间选择的下拉菜单生成图表?
HoloViews 主要用于轻松绘制所谓的“整洁”或长数据帧,因此要充分利用 HoloViews 的强大功能,您需要将数据转换为该格式。该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')
或者,您也可以手动手动创建 HoloMap:
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')
说了这么多,您的用例是一个非常常见的用例,并且 HoloViews 的下一个版本将包括使这种事情变得更容易的方法,因此请查看有关使用 pandas DataFrames 的用户指南。