如何在 HoloViews 中获取小部件“处理程序”

use*_*217 5 python holoviews holoviz

当使用基于 xArray 数据的 HoloViews 创建绘图 (QuadMesh) 时,任何缺失的维度都会自动创建滑块等小部件以方便数据探索。例如:

hv_ds = hv.Dataset(data)    
plot = hv_ds.to(hv.QuadMesh, kdims=["lon", "lat"], vdims="depth")
Run Code Online (Sandbox Code Playgroud)

由于数据包含 12 个月的数据,HoloViews 将根据经度和纬度创建 QuadMesh,使用深度作为值,然后提供一个滑块小部件来选择月份。它将把所有内容包装在一个 HoloMap 中,如下所示:

HoloMap containing 12 items of type QuadMesh
--------------------------------------------

Key Dimensions: 
     month: 1.0...12.0 
Deep Dimensions: 
     lon: -280.0...80.0 
     lat: -78.0...-44.6 
     depth: 3.5...4796.6 
Run Code Online (Sandbox Code Playgroud)

生成图

我想检索“月份滑块小部件”的值以更新另一个图,但我找不到访问它的方法。没有plot.get_widget_value()或类似的东西。有什么想法可以获取它的指针或处理程序吗?

San*_*ord 1

当您创建这样的小部件+绘图时,我不知道如何获取当前值。也许其他人知道。

但我确实知道当您使用面板创建小部件+绘图时如何获取当前选定的值,如下例所示。如果你这样做,你可以只使用your_selection_widget.value来获取当前选择的值:

# import libraries
import numpy as np
import pandas as pd

import hvplot
import hvplot.pandas

import holoviews as hv
hv.extension('bokeh', logo=False)

import panel as pn


# create sample data
df = pd.DataFrame({
    'col1': np.random.rand(30),
    'col2': np.random.normal(size=30),
    'category_col': np.random.choice(['category1', 'category2'], size=30)
})

# create widget to select category
category = pn.widgets.Select(options=['category1', 'category2'])

# function that returns a plot depending on the category selected
@pn.depends(category)
def get_plot(category):
    df_selected = df[df['category_col'] == category]
    plot = df_selected.hvplot.scatter(x='col1', y='col2')
    return plot

# show dashboard with selection widget and dynamic plot
pn.Column(
    pn.Row(category),
    get_plot,
)

# get value of current selected category
category.value
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到有关如何创建交互式仪表板的更多信息: https:
//panel.pyviz.org/gallery/apis/stocks_hvplot.html#gallery-stocks-hvplot