如何在HoloViews中获取小部件“handler”

2024-09-28 16:23:34 发布

您现在位置:Python中文网/ 问答频道 /正文

在基于xArray数据创建带有HoloViews的plot(QuadMesh)时,任何缺少的维度都将自动创建诸如滑块之类的小部件,以方便数据探索。例如:

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

由于数据包含12个月的数据,HoloViews将基于lon&lat创建QuadMesh,使用depth作为值,然后提供一个滑块小部件来选择月份。它将把所有的一切都包裹在一个全息图中,看起来像这样:

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 

Plot generated

我想检索“月滑块小部件”的值以更新另一个绘图,但找不到访问它的方法。没有plot.get_widget_value()或类似的东西。你知道我怎样才能得到一个指针或处理器吗?你知道吗


Tags: 数据dataplot部件dsdatasetdimensionsholoviews
1条回答
网友
1楼 · 发布于 2024-09-28 16:23:34

我不知道当你创建一个widget+这样的绘图时如何得到当前值。也许别人知道。

但是我知道当你使用下面的例子那样的面板创建你的widget+plot时如何得到当前选中的值。如果您这样做,您可以使用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

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

相关问题 更多 >