holoviz / holoviz/hvplot

add a temp name for an xarray DataArray

Open
#976 2 comments 0 reactions 0 assignees View on GitHub
interface: xarray
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.