问题描述
我正在查看 Holoviz 教程练习,以使用 Panel 构建仪表板:https://holoviz.org/tutorial/exercises/Building_a_Dashboard.html
我希望将最后一个练习的解决方案转化为使用 piped data filtering 的方法,以便
year_df = df[df.time.dt.year == year].compute()
每次滑块值更新时,语句只需计算一次。
提供的解决方案如下(注意数据过滤在三个不同的地方是如何发生的):
year_slider = pn.widgets.IntSlider(name='Year',start=2000,end=2018,value=2000)
@pn.depends(year_slider.param.value)
def title_fn(year):
return '## Strongest Earthquakes in the Year {year}'.format(year=year)
@pn.depends(year_slider.param.value)
def strongest_earthquakes_fn(year):
year_df = df[df.time.dt.year == year].compute()
return year_df.sort_values('mag',ascending=False).iloc[:5][['time','place','mag']].reset_index(drop=True)
@pn.depends(year_slider.param.value)
def gmap_fn(year):
yearly_df = df[(df.time.dt.year == year)].compute()
index = np.argmax(yearly_df.mag.values)
strongest = yearly_df.iloc[index]
lon,lat = strongest.longitude,strongest.latitude
return pn.pane.HTML("""
<iframe width="300" height="300" src="https://maps.google.com/maps?q={lat},{lon}&z=6&output=embed"
frameborder="0" scrolling="no" marginheight="0" marginwidth="0"></iframe>
""".format(lat=lat,lon=lon),height=300,width=300)
@pn.depends(year_slider.param.value)
def plot_fn(year):
year_df = df[df.time.dt.year == year].compute()
return hv.Violin(year_df,'type',('mag','Magnitude'))
logo = pn.panel(logo_url,width=200)
equation = pn.pane.LaTeX(equation_string)
header = pn.Row(title_fn,pn.layout.HSpacer(),logo)
body = pn.Row(
pn.Column('### Strongest Earthquakes',strongest_earthquakes_fn),pn.Column('### Map',gmap_fn),pn.Column('### Magnitude Plot',plot_fn)
)
pn.Column(header,year_slider,body)
现在这是我到目前为止所得到的:
dataset = hv.Dataset(df)
year_slider2 = pn.widgets.IntSlider(name='Year',value=2000)
def filter_ds_fn(ds,year):
year_df = dataset.data[dataset.data.time.dt.year == year].compute()
return hv.Dataset(year_df)
filtered_ds = dataset.apply(filter_ds_fn,year=year_slider2.param.value)
def plot_fn(ds):
year_df = ds.data
return hv.Violin(year_df,'Magnitude'))
dynamic_plot = filtered_ds.apply(plot_fn)
有两件事我想不通:
- 如何显示来自 DynamicMap 的数据框,即上面解决方案中的
strongest_earthquakes_fn
等价物。特别是,filtered_ds.data
不是我所期望的(它是 OrderedDict 而不是 DataFrame)。 - 如何从 DynamicMap 显示降价,即上面解决方案中的
gmap_fn
等价物。
非常感谢建议!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)