首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HoloViews:创建框式交互情节

HoloViews:创建框式交互情节
EN

Stack Overflow用户
提问于 2022-07-15 08:44:18
回答 1查看 119关注 0票数 0

我想要创建一个仪表板,用户可以通过选择by按钮选择在Boxplot中显示哪些数据。我所能找到的是线性交互情节的指令,不幸的是,我无法找到如何制作交互框图。

到目前为止,我的代码如下所示:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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

创建了一些按钮:

代码语言:javascript
复制
typebutton = pn.widgets.RadioButtonGroup(name='Typebutton', options=['A','B'],button_type='success')

现在将按钮与dataframe连接起来:

代码语言:javascript
复制
df = df.interactive()
df_inter = (df[df.Type == typebutton]) 

带按钮的交互式DataFrame

现在我准备密谋:

代码语言:javascript
复制
df_group = df_inter.groupby(['idx'])[['Col1', 'Col2', 'Col3', 'Col4']].mean()

在这一点上我可以用

代码语言:javascript
复制
dfplot = df_group.hvplot()

得到我的数据的交互式线性图。但是我怎样才能创建交互式的盒子呢?

到目前为止我知道:

代码语言:javascript
复制
hv.BoxWhisker(bdf.melt(), kdims='variable', vdims='value')

是给我一个小插曲,但我如何让它们互动呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-15 15:29:34

框图是由hvPlot支持的;不需要降到HoloViews。有关支持的所有绘图类型,请参见https://hvplot.holoviz.org/reference。请注意,web页面上列出的.hvplot.box()语法是.interactive;您需要将其称为kind='box'

代码语言:javascript
复制
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')

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72991360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档