| 916 | |
| 917 | |
| 918 | class 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 |
nothing calls this directly
no outgoing calls
no test coverage detected
searching dependent graphs…