diff --git a/holoviews/core/data/__init__.py b/holoviews/core/data/__init__.py index f266adbe45..977da78443 100644 --- a/holoviews/core/data/__init__.py +++ b/holoviews/core/data/__init__.py @@ -359,7 +359,8 @@ def aggregate(self, dimensions=None, function=None, spreadfn=None, **kwargs): combined = self.clone(aggregated, kdims=kdims) for i, d in enumerate(vdims): dim = d('_'.join([d.name, spread_name])) - combined = combined.add_dimension(dim, ndims+i, error[d], True) + dvals = error.dimension_values(d, False, False) + combined = combined.add_dimension(dim, ndims+i, dvals, True) return combined if np.isscalar(aggregated): diff --git a/holoviews/core/data/xarray.py b/holoviews/core/data/xarray.py index a10ce1f930..557cc7ff13 100644 --- a/holoviews/core/data/xarray.py +++ b/holoviews/core/data/xarray.py @@ -194,7 +194,8 @@ def select(cls, dataset, selection_mask=None, **selection): if isinstance(v, set): validated[k] = list(v) elif isinstance(v, tuple): - validated[k] = slice(v[0], v[1]-sys.float_info.epsilon*10) + upper = None if v[1] is None else v[1]-sys.float_info.epsilon*10 + validated[k] = slice(v[0], upper) elif isinstance(v, types.FunctionType): validated[k] = v(dataset[k]) else: @@ -234,7 +235,9 @@ def add_dimension(cls, dataset, dimension, dim_pos, values, vdim): if not vdim: raise Exception("Cannot add key dimension to a dense representation.") dim = dimension.name if isinstance(dimension, Dimension) else dimension - return dataset.assign(**{dim: values}) + arr = xr.DataArray(values, coords=dataset.data.coords, name=dim, + dims=dataset.data.dims) + return dataset.data.assign(**{dim: arr}) Interface.register(XArrayInterface)