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

2024-04-19 07:56:42 发布

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

使用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)

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

enter image description here

如果我看看创建的对象:

^{pr2}$

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

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

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


Tags: 数据import部件asairrowxarraymesh
1条回答
网友
1楼 · 发布于 2024-04-19 07:56:42

要了解如何自定义不同类型的显示输出,必须了解panel如何将给定的对象转换为显示pprint输出时看到的对象。具体来说,内部面板将调用pn.面板{cd1>试图找到最合适的对象。在本例中,HoloViews窗格负责生成小部件并呈现实际的绘图。换言之,此代码:

row = pn.Row(mesh)

实际上相当于:

^{pr2}$

这又相当于:

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

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

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

或者不太明确:

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

select_widget

相关问题 更多 >