Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在pyviz-hvplot生成的小部件中指定默认值_Python_Holoviews_Pyviz - Fatal编程技术网

Python 在pyviz-hvplot生成的小部件中指定默认值

Python 在pyviz-hvplot生成的小部件中指定默认值,python,holoviews,pyviz,Python,Holoviews,Pyviz,我有一个4D数据集,hvplot很好地为我在groupby中指定的维度生成小部件: import xarray as xr ds = xr.open_dataset('http://gamone.whoi.edu/thredds/dodsC/coawst_4/use/fmrc/coawst_4_use_best.ncd') rho_vars = ['salt','temp'] from cartopy import crs as ccrs import hvplot.xarray impo

我有一个4D数据集,
hvplot
很好地为我在
groupby
中指定的维度生成小部件:

import xarray as xr

ds = xr.open_dataset('http://gamone.whoi.edu/thredds/dodsC/coawst_4/use/fmrc/coawst_4_use_best.ncd')

rho_vars = ['salt','temp']

from cartopy import crs as ccrs
import hvplot.xarray
import holoviews as hv
from geoviews import tile_sources as gvts
import panel as pn

var_select = pn.widgets.Select(name='Variables:', options=rho_vars, 
                               value='temp')

crs = ccrs.PlateCarree()

def plot(var=None):
    base_map = gvts.OSM
    var = var or var_select.value
    mesh = ds[var][-24:,:,:].hvplot.quadmesh(x='lon_rho', y='lat_rho', rasterize=True, title=var,
                                    width=600, height=400, crs=crs,
                                    groupby=list(ds[var].dims[:-2]), cmap='jet')
    overlay = (base_map * mesh.opts(alpha=0.7)).opts(active_tools=['wheel_zoom', 'pan'])
    widgets = {dim: pn.widgets.Select for dim in ds[var].dims[:-2]}
    return pn.holoviews.HoloViews(overlay, widgets=widgets).layout

def on_var_select(event):
    var = event.obj.value
    dashboard[-1] = plot(var=var)

var_select.param.watch(on_var_select, parameter_names=['value']);

dashboard = pn.Column(var_select, plot(var_select.value))
产生:

但是,虽然
hvplot
默认为
选项的第一个值
orderedict
,但我希望默认为最后一个值

如果我查看仪表板元素:

print(dashboard)

Column
    [0] Select(name='Variables:', options=OrderedDict([('salt', ...]), value='temp')
    [1] Row
        [0] HoloViews(DynamicMap, widgets={'time': <class 'panel.wid...})
        [1] Column
            [0] Select(name='Forecast time f..., options=OrderedDict([('2019-03-09 ...]), value=numpy.datetime64('2019-03-...)
            [1] Select(name='S-coordinate a..., options=OrderedDict([('-0.96875', ...]), value=-0.96875)
这确实有效:

但是,我想制作一个独立的仪表板,当用户选择一个新变量时,它默认为最后一个值。对于当前代码,当选择新变量时,默认值不幸再次设置为第一个值

有没有办法将事后代码嵌入到绘图函数中来选择最后一个值,或者有没有其他更好的方法来实现这一点


.

当您打印(仪表板)时可以看到,您有一个小部件的默认值



Column
    [0] Select(name='Variables:', options=OrderedDict([('salt', ...]), value='temp')
    [1] Row
        [0] HoloViews(DynamicMap, widgets={'time': <class 'panel.wid...})
        [1] Column
            [0] Select(name='Forecast time f..., options=OrderedDict([('2019-03-09 ...]), value=numpy.datetime64('2019-03-...)
            [1] Select(name='S-coordinate a..., options=OrderedDict([('-0.96875', ...]), value=-0.96875)

如果我正确理解了您的问题,使用hvplot可以做到这一点。

Thomas,这似乎是正确的轨迹,但当我指定
Select(value=
所有其他参数,如
Select)时(名称=,选项=< /代码>丢失。这是令人沮丧的。值得在面板中打开这个问题,我们应该考虑找到一个好的方法来指定这个。我不确定修改用户构造的小部件是否是最好的方法,即使在这种情况下也是方便的。


Column
    [0] Select(name='Variables:', options=OrderedDict([('salt', ...]), value='temp')
    [1] Row
        [0] HoloViews(DynamicMap, widgets={'time': <class 'panel.wid...})
        [1] Column
            [0] Select(name='Forecast time f..., options=OrderedDict([('2019-03-09 ...]), value=numpy.datetime64('2019-03-...)
            [1] Select(name='S-coordinate a..., options=OrderedDict([('-0.96875', ...]), value=-0.96875)
default_value = [...,...]
widgets = {dim: pn.widgets.Select(value=default_val[dim]) for dim in ds[var].dims[:-2]}