diff --git a/holoviews/element/__init__.py b/holoviews/element/__init__.py index 3312b5651c..fea3de9751 100644 --- a/holoviews/element/__init__.py +++ b/holoviews/element/__init__.py @@ -31,18 +31,24 @@ def curve(self, kdims=None, vdims=None, mdims=None, **kwargs): def errorbars(self, kdims=None, vdims=None, mdims=None, **kwargs): return self(ErrorBars, kdims, vdims, mdims, sort=True, **kwargs) - def distribution(self, dim, mdims=[], **kwargs): + def distribution(self, dim=None, mdims=[], **kwargs): from ..interface.seaborn import Distribution + if dim is None: + if self._element.vdims: + dim = self._element.vdims[0] + else: + raise Exception('Must supply an explicit value dimension ' + 'if no value dimensions are defined ') if mdims: - reindexed = self._table.reindex(mdims+[dim]) + reindexed = self._element.reindex(mdims, [dim]) return reindexed.groupby(mdims, HoloMap, Distribution, **kwargs) else: - table = self._table - params = dict(kdims=[table.get_dimension(dim)], - label=table.label) - if table.group != table.params()['group'].default: - params['group'] = table.group - return Distribution((table.dimension_values(dim),), + element = self._element + params = dict(vdims=[element.get_dimension(dim)], + label=element.label) + if element.group != element.params()['group'].default: + params['group'] = element.group + return Distribution((element.dimension_values(dim),), **dict(params, **kwargs)) def heatmap(self, kdims=None, vdims=None, mdims=None, **kwargs): diff --git a/holoviews/interface/seaborn.py b/holoviews/interface/seaborn.py index 89da0d250d..3c937568ac 100644 --- a/holoviews/interface/seaborn.py +++ b/holoviews/interface/seaborn.py @@ -93,11 +93,11 @@ class Distribution(Chart): list. Internally it uses Seaborn to make all the conversions. """ - kdims = param.List(default=[], bounds=(0,0)) + kdims = param.List(default=[]) group = param.String(default='Distribution', constant=True) - vdims = param.List(default=[Dimension('Frequency')]) + vdims = param.List(default=[Dimension('Value')]) _1d = True diff --git a/holoviews/plotting/mpl/seaborn.py b/holoviews/plotting/mpl/seaborn.py index fd48d09c18..4a9fdb6ada 100644 --- a/holoviews/plotting/mpl/seaborn.py +++ b/holoviews/plotting/mpl/seaborn.py @@ -147,8 +147,9 @@ def get_data(self, element, ranges, style): style.pop('zorder', None) if self.invert_axes: style['vertical'] = True - axis_kwargs = dict(xlabel='', ylabel=str(element.get_dimension(0))) - return (element.dimension_values(0),), style, axis_kwargs + vdim = element.vdims[0] + axis_kwargs = dict(dimensions=[vdim]) + return (element.dimension_values(vdim),), style, axis_kwargs def init_artists(self, ax, plot_data, plot_kwargs): return {'axis': sns.distplot(*plot_data, ax=ax, **plot_kwargs)}