更改 hvplot/holoviews/panel 对象中的小部件类型的最佳方法是什么?
What is the best way to change the widget type in an hvplot/holoviews/panel object?
使用 pyviz, it's easy to generate an hvplot
/panel
interactive dashboard for a gridded 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)
自动为时间维度创建滑块:
如果我看一下创建的对象:
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
窗格负责生成小部件和渲染实际绘图。换句话说这段代码:
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
或不太明确:
pn.panel(mesh, widgets={'time': pn.widgets.Select})
使用 pyviz, it's easy to generate an hvplot
/panel
interactive dashboard for a gridded 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)
自动为时间维度创建滑块:
如果我看一下创建的对象:
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
窗格负责生成小部件和渲染实际绘图。换句话说这段代码:
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
或不太明确:
pn.panel(mesh, widgets={'time': pn.widgets.Select})