gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:04:19 25 4
gpt4 key购买 nike

使用 pyviz 中的功能, 很容易为网格 xarray 生成一个 hvplot/panel 交互式仪表板数据集,例如这个气温数据示例:

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)

它会自动为时间维度创建一个 slider :

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-...)

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

最佳答案

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

row = pn.Row(mesh)

实际上等同于:

row = pn.Row(pn.panel(mesh))

反过来相当于:

row = pn.Row(pn.holoviews.HoloViews(mesh).layout)

一旦您处于用于呈现对象的实际 Pane 级别,您将能够看到可用于自定义对象的视觉表示的参数。在 HoloViews Pane 的情况下,它提供了一个 widgets 参数,该参数允许提供小部件类或实例作为您正在显示的对象中每个维度的覆盖。因此,在您的情况下,您想要做这样的事情:

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

或不太明确:

pn.panel(mesh, widgets={'time': pn.widgets.Select})

select_widget

关于python - 更改 hvplot/holoviews/panel 对象中的小部件类型的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54911674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com