我想要创建一个仪表板,用户可以通过选择by按钮选择在Boxplot中显示哪些数据。我所能找到的是线性交互情节的指令,不幸的是,我无法找到如何制作交互框图。
到目前为止,我的代码如下所示:
import numpy as np
import hvplot.pandas
import panel as pn
import holoviews as hv
np.random.seed(1234)
adf = pd.DataFrame(np.random.rand(3, 4),
columns=['Col1', 'Col2', 'Col3', 'Col4'])
bdf = pd.DataFrame(np.random.rand(3, 4),
columns=['Col1', 'Col2', 'Col3', 'Col4'])
adf['Type'] = 'A'
bdf['Type'] = 'B'
df = pd.concat([adf,bdf])
df.index.names = ['idx']那是我的DataFrame:
idx Col1 Col2 Col3 Col4 Type
0 0.191519 0.622109 0.437728 0.785359 A
1 0.779976 0.272593 0.276464 0.801872 A
2 0.958139 0.875933 0.357817 0.500995 A
0 0.683463 0.712702 0.370251 0.561196 B
1 0.503083 0.013768 0.772827 0.882641 B
2 0.364886 0.615396 0.075381 0.368824 B创建了一些按钮:
typebutton = pn.widgets.RadioButtonGroup(name='Typebutton', options=['A','B'],button_type='success')现在将按钮与dataframe连接起来:
df = df.interactive()
df_inter = (df[df.Type == typebutton]) 现在我准备密谋:
df_group = df_inter.groupby(['idx'])[['Col1', 'Col2', 'Col3', 'Col4']].mean()在这一点上我可以用
dfplot = df_group.hvplot()得到我的数据的交互式线性图。但是我怎样才能创建交互式的盒子呢?
到目前为止我知道:
hv.BoxWhisker(bdf.melt(), kdims='variable', vdims='value')是给我一个小插曲,但我如何让它们互动呢?
发布于 2022-07-15 15:29:34
框图是由hvPlot支持的;不需要降到HoloViews。有关支持的所有绘图类型,请参见https://hvplot.holoviz.org/reference。请注意,web页面上列出的.hvplot.box()语法是.interactive;您需要将其称为kind='box':
import numpy as np, pandas as pd, hvplot.pandas, panel as pn
np.random.seed(1234)
cols = ['Col1', 'Col2', 'Col3', 'Col4']
adf = pd.DataFrame(np.random.rand(3, 4), columns=cols)
bdf = pd.DataFrame(np.random.rand(3, 4), columns=cols)
adf['Type'] = 'A'
bdf['Type'] = 'B'
df = pd.concat([adf,bdf])
df.index.names = ['idx']
typebutton = pn.widgets.RadioButtonGroup(name='Typebutton', options=['A','B'],button_type='success')
dfi = df.interactive(width=800)
df_inter = (dfi[dfi.Type == typebutton])
df_inter.hvplot(kind='box')

https://stackoverflow.com/questions/72991360
复制相似问题