Skip to content

Commit

Permalink
Merge pull request #630 from ioam/dist_fix
Browse files Browse the repository at this point in the history
Various fixes for seaborn Distribution plotting, dimensions and conversions
  • Loading branch information
jlstevens committed Apr 20, 2016
2 parents 3edbfbd + c6b1a23 commit faf1f56
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 12 deletions.
22 changes: 14 additions & 8 deletions holoviews/element/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
4 changes: 2 additions & 2 deletions holoviews/interface/seaborn.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
5 changes: 3 additions & 2 deletions holoviews/plotting/mpl/seaborn.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)}
Expand Down

0 comments on commit faf1f56

Please sign in to comment.