在hvplot / holoviews / panel对象中更改窗口小部件类型的最佳方法是什么?

问题描述 投票:3回答:1

使用pyviz中的功能,可以轻松为网格化的hvplot数据集生成panel / xarray交互式仪表板,如此气温数据示例:

import xarray as xr
import hvplot.xarray
import panel as pn

airtemps = xr.tutorial.load_dataset('air_temperature')
atemp = airtemps.air[:10,:,:]
mesh = atemp.hvplot(groupby='time')
row = pn.Row(mesh)
display(row)

它会自动为时间维创建一个滑块:

enter image description here

如果我看一下创建的对象:

print(row)

我可以看到创建了一个DiscreteSlider小部件:

Row
    [0] Row
        [0] HoloViews(DynamicMap)
        [1] WidgetBox
            [0] DiscreteSlider(name='Time', options=OrderedDict([('2013-01-01 ...]), value=numpy.datetime64('2013-01-...)

用下拉菜单qazxsw poi小部件替换qazxsw poi小部件的最佳方法是什么?

python holoviews pyviz
1个回答
3
投票

要了解如何自定义不同类型的显示输出,您必须了解面板如何将您提供的对象转换为显示pprint输出时看到的对象。具体来说,内部面板将调用pn.panel函数,该函数试图找到最合适的DiscreteSlider对象来呈现您给出的对象。在这种情况下,这是Select窗格,负责生成窗口小部件和渲染实际绘图。换句话说,这段代码:

Pane

实际上相当于:

HoloViews

这相当于:

row = pn.Row(mesh)

一旦您处于用于渲染对象的实际窗格的级别,您将能够看到可用于自定义对象的可视表示的参数。在row = pn.Row(pn.panel(mesh)) 窗格的情况下,它提供了row = pn.Row(pn.holoviews.HoloViews(mesh).layout) 参数,该参数允许提供窗口小部件类或实例作为您正在显示的对象中每个维度的覆盖。在你的情况下,你想要做这样的事情:

HoloViews

或者更少明确:

widgets

pn.holoviews.HoloViews(mesh, widgets={'time': pn.widgets.Select}).layout

© www.soinside.com 2019 - 2024. All rights reserved.