From f07021f1eb9be8cd77d89fb636a33d6767536fc9 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Fri, 2 Feb 2018 03:44:38 +0000 Subject: [PATCH] Fixed bug computing categorical datashader aggregates --- holoviews/operation/datashader.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/holoviews/operation/datashader.py b/holoviews/operation/datashader.py index 69050e750f..ff622935e2 100644 --- a/holoviews/operation/datashader.py +++ b/holoviews/operation/datashader.py @@ -374,9 +374,10 @@ def _process(self, element, key=None): raise ValueError("Aggregation column %s not found on %s element. " "Ensure the aggregator references an existing " "dimension." % (column,element)) + name = column if isinstance(agg_fn, ds.count_cat): - name = '%s Count' % agg_fn.column - vdims = [dims[0](column)] + name = '%s Count' % column + vdims = [dims[0](name)] else: vdims = Dimension('Count') params = dict(get_param_values(element), kdims=[x, y], @@ -400,7 +401,7 @@ def _process(self, element, key=None): for c in agg.coords[column].data: cagg = agg.sel(**{column: c}) eldata = cagg if ds_version > '0.5.0' else (xs, ys, cagg.data) - layers[c] = self.p.element_type(eldata, **params) + layers[c] = self.p.element_type(eldata, **dict(params, vdims=vdims)) return NdOverlay(layers, kdims=[data.get_dimension(column)]) @@ -725,12 +726,12 @@ def concatenate(cls, overlay): """ if not isinstance(overlay, NdOverlay): raise ValueError('Only NdOverlays can be concatenated') - xarr = xr.concat([v.data.T for v in overlay.values()], + xarr = xr.concat([v.data.transpose() for v in overlay.values()], pd.Index(overlay.keys(), name=overlay.kdims[0].name)) params = dict(get_param_values(overlay.last), vdims=overlay.last.vdims, kdims=overlay.kdims+overlay.last.kdims) - return Dataset(xarr.T, datatype=['xarray'], **params) + return Dataset(xarr.transpose(), datatype=['xarray'], **params) @classmethod