MCPcopy Create free account
hub / github.com/holoviz/hvplot / hvGridExplorer

Class hvGridExplorer

hvplot/ui.py:918–1004  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

916
917
918class hvGridExplorer(hvPlotExplorer):
919 kind = param.Selector(default='image', objects=KINDS['all'])
920
921 def __init__(self, ds, **params):
922 import xarray as xr
923
924 var_name_suffix = ''
925 if isinstance(ds, xr.Dataset):
926 data_vars = list(ds.data_vars)
927 if len(data_vars) == 1:
928 ds = ds[data_vars[0]]
929 var_name_suffix = f"['{data_vars[0]}']"
930 else:
931 missing_dims = set(ds.dims) - set(ds.coords)
932 if missing_dims:
933 # fixes https://github.com/holoviz/hvplot/issues/1272
934 for dim in missing_dims:
935 ds.coords[dim] = np.arange(len(ds[dim]))
936 ds = ds.to_array('variable').transpose(..., 'variable')
937 var_name_suffix = ".to_array('variable').transpose(..., 'variable')"
938 if 'kind' not in params:
939 params['kind'] = 'image'
940 self._var_name_suffix = var_name_suffix
941 super().__init__(ds, **params)
942
943 @property
944 def _var_name(self):
945 if self._var_name_suffix:
946 return f'ds{self._var_name_suffix}'
947 else:
948 return 'da'
949
950 @property
951 def _x(self):
952 return (self._converter.x or self._converter.indexes[0]) if self.x is None else self.x
953
954 @property
955 def _y(self):
956 return (self._converter.y or self._converter.indexes[1]) if self.y is None else self.y
957
958 @param.depends('x')
959 def xlim(self):
960 try:
961 values = self._data[self._x]
962 except Exception:
963 return 0, 1
964 if values.dtype.kind in 'OSU':
965 return None
966 return (np.nanmin(values), np.nanmax(values))
967
968 @param.depends('y', 'y_multi')
969 def ylim(self):
970 y = self._y
971 if not isinstance(y, list):
972 y = [y]
973 values = (self._data[y] for y in y)
974 return max_range([(np.nanmin(vs), np.nanmax(vs)) for vs in values])
975

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…