add a temp name for an xarray DataArray
- Dominant language
- Python
- Stars
- 1.4k
- Forks
- 124
- Avg merge
- 1d 18h
- Merged PRs (30d)
- 1
Description
#### Is your feature request related to a problem? Please describe.
`xr.DataArray(plot).hvplot` gives DataError: xarray DataArray does not define a name and Dataset does not define a default value dimension. Give the DataArray a name or supply an explicit vdim.
#### Describe the solution you'd like
for hvplot() to name the DataArray with a temporary name e.g. "array"
#### Additional context
I understand this takes away from best practices for a user but I would like to use hvplot for rapid interactive visualization. It could give a warning such as creating a temporary name. especially if it is a dim_0, dim_1, etc. array
The current traceback is quite long and may steer people away from using hvplot
```
import hvplot.xarray
import numpy as np
import xarray as xr
xr.DataArray(np.ones((2, 2))).hvplot()
```
gives
```
DataError Traceback (most recent call last)
File ~/miniforge3/envs/main/lib/python3.9/site-packages/hvplot/converter.py:1224, in HoloViewsConverter.__call__(self, kind, x, y)
1223 try:
-> 1224 dataset = Dataset(data, self.indexes)
1225 except Exception:
File ~/miniforge3/envs/main/lib/python3.9/site-packages/holoviews/core/data/__init__.py:338, in Dataset.__init__(self, data, kdims, vdims, **kwargs)
337 validate_vdims = kwargs.pop('_validate_vdims', True)
--> 338 initialized = Interface.initialize(type(self), data, kdims, vdims,
339 datatype=kwargs.get('datatype'))
340 (data, self.interface, dims, extra_kws) = initialized
File ~/miniforge3/envs/main/lib/python3.9/site-packages/holoviews/core/data/interface.py:254, in Interface.initialize(cls, eltype, data, kdims, vdims, datatype)
253 try:
--> 254 (data, dims, extra_kws) = interface.init(eltype, data, kdims, vdims)
255 break
File ~/miniforge3/envs/main/lib/python3.9/site-packages/holoviews/core/data/xarray.py:117, in XArrayInterface.init(cls, eltype, data, kdims, vdims)
116 else:
--> 117 raise DataError("xarray DataArray does not define a name "
118 "and %s does not define a default value "
119 "dimension. Give the DataArray a name or "
120 "supply an explicit vdim." % eltype.__name__,
121 cls)
122 if not packed:
DataError: xarray DataArray does not define a name and Dataset does not define a default value dimension. Give the DataArray a name or supply an explicit vdim.
XArrayInterface expects gridded data, for more information on supported datatypes see http://holoviews.org/user_guide/Gridded_Datasets.html
During handling of the above exception, another exception occurred:
DataError Traceback (most recent call last)
Cell In [10], line 1
----> 1 xr.DataArray(np.ones((2, 2))).hvplot()
File ~/miniforge3/envs/main/lib/python3.9/site-packages/hvplot/plotting/core.py:130, in hvPlotBase.__call__(self, x, y, kind, **kwds)
127 plot = self._get_converter(x, y, kind, **kwds)(kind, x, y)
128 return pn.panel(plot, **panel_dict)
--> 130 return self._get_converter(x, y, kind, **kwds)(kind, x, y)
File ~/miniforge3/envs/main/lib/python3.9/site-packages/hvplot/converter.py:1226, in HoloViewsConverter.__call__(self, kind, x, y)
1224 dataset = Dataset(data, self.indexes)
1225 except Exception:
-> 1226 dataset = Dataset(data)
1227 dataset = dataset.redim(**self._redim)
1228 obj = method(x, y)
File ~/miniforge3/envs/main/lib/python3.9/site-packages/holoviews/core/data/__init__.py:338, in Dataset.__init__(self, data, kdims, vdims, **kwargs)
335 kdims, vdims = kwargs.get('kdims'), kwargs.get('vdims')
337 validate_vdims = kwargs.pop('_validate_vdims', True)
--> 338 initialized = Interface.initialize(type(self), data, kdims, vdims,
339 datatype=kwargs.get('datatype'))
340 (data, self.interface, dims, extra_kws) = initialized
341 super(Dataset, self).__init__(data, **dict(kwargs, **dict(dims, **extra_kws)))
File ~/miniforge3/envs/main/lib/python3.9/site-packages/holoviews/core/data/interface.py:254, in Interface.initialize(cls, eltype, data, kdims, vdims, datatype)
252 continue
253 try:
--> 254 (data, dims, extra_kws) = interface.init(eltype, data, kdims, vdims)
255 break
256 except DataError:
File ~/miniforge3/envs/main/lib/python3.9/site-packages/holoviews/core/data/xarray.py:117, in XArrayInterface.init(cls, eltype, data, kdims, vdims)
111 raise DataError("xarray DataArray does not define a name, "
112 "and the default of '%s' clashes with a "
113 "coordinate dimension. Give the DataArray "
114 "a name or supply an explicit value dimension."
115 % vdim.name, cls)
116 else:
--> 117 raise DataError("xarray DataArray does not define a name "
118 "and %s does not define a default value "
119 "dimension. Give the DataArray a name or "
120 "supply an explicit vdim." % eltype.__name__,
121 cls)
122 if not packed:
123 vdims = [vdim]
DataError: xarray DataArray does not define a name and Dataset does not define a default value dimension. Give the DataArray a name or supply an explicit vdim.
XArrayInterface expects gridded data, for more information on supported datatypes see http://holoviews.org/user_guide/Gridded_Datasets.html
```
Contributor guide
Assessment
This issue has not been assessed yet.