首页 > 解决方案 > 将 Holoviews 保存为交互式 html

问题描述

我有一个 Holoviews 代码,旨在将输出保存为 .html。以下工作正常,即生成 html 并渲染标签,但过滤器不起作用。我究竟做错了什么?

def load_data(country, lan_name, **kwargs):
    df = subset
    if country != 'ALL':
        df = df[(df.country == country)]
    if lan_name != 'ALL':
        df = df[(df.lan_name == lan_name)]

    table = format_chars(df['term'], df['hex'])
    #hv.Table(df, ['country', 'lan_name'], [], label='Data Table')

    layout = (table).opts(
        opts.Layout(merge_tools=False),
        opts.Div(width=700, height=400),
    )
    return layout

methods = ['ALL'] + sorted(list(subset['country'].unique()))
models = ['ALL'] + sorted(list(subset['lan_name'].unique()))
dmap = hv.DynamicMap(load_data, kdims=['country', 'lan_name']).redim.values(country=methods, lan_name=models)
hv.save(dmap, 'output.html', backend='bokeh')

标签: pythonpandasholoviews

解决方案


通过“过滤器”,听起来您的意思是沿着countrylan_name尺寸选择的小部件。每次您选择小部件的新值时,DynamicMap 都会调用您提供的 Python 函数(load_data此处)来计算显示(这就是使其“动态”的原因)。当您拥有静态 HTML 文件时,没有可用的 Python 进程,因此在这种情况下,显示将永远不会更新。

要使静态 HTML 文件中的某些有限功能可用,您可以将 DynamicMap 转换为 HoloMap,其中包含小部件值的某些特定组合的所有显示项目 ( http://holoviews.org/user_guide/Live_Data.html#Converting-从-DynamicMap 到-HoloMap )。生成的参数空间很快就会变得非常大,因此您通常需要选择一个可行的值子集,以使其成为一个实用的选项。


推荐阅读