Skip to content

Commit

Permalink
Cleaned up and documented categorize_data
Browse files Browse the repository at this point in the history
  • Loading branch information
philippjfr committed Jan 30, 2017
1 parent bdf152d commit 8b05b57
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 12 deletions.
2 changes: 1 addition & 1 deletion holoviews/plotting/bokeh/annotation.py
Expand Up @@ -20,7 +20,7 @@ def get_data(self, element, ranges=None, empty=False):
data = dict(x=[element.y], y=[element.x])
else:
data = dict(x=[element.x], y=[element.y])
self._clean_data(data, ('x', 'y'), element.dimensions())
self._categorize_data(data, ('x', 'y'), element.dimensions())
data['text'] = [element.text]
return (data, mapping)

Expand Down
6 changes: 3 additions & 3 deletions holoviews/plotting/bokeh/chart.py
Expand Up @@ -87,7 +87,7 @@ def get_data(self, element, ranges=None, empty=False):
xdim, ydim = dims[xidx], dims[yidx]
data[xdim] = [] if empty else element.dimension_values(xidx)
data[ydim] = [] if empty else element.dimension_values(yidx)
self._clean_data(data, (xdim, ydim), element.dimensions())
self._categorize_data(data, (xdim, ydim), element.dimensions())
self._get_hover_data(data, element, empty)
return data, mapping

Expand Down Expand Up @@ -148,7 +148,7 @@ def get_data(self, element, ranges=None, empty=False):
y = element.get_dimension(yidx).name
data = {x: [] if empty else element.dimension_values(xidx),
y: [] if empty else element.dimension_values(yidx)}
self._clean_data(data, (x, y), element.dimensions())
self._categorize_data(data, (x, y), element.dimensions())
return (data, dict(x=x, y=y))

def _hover_tooltips(self, element):
Expand Down Expand Up @@ -371,7 +371,7 @@ def get_data(self, element, ranges=None, empty=False):
data = dict(xs=err_ys, ys=err_xs)
else:
data = dict(xs=err_xs, ys=err_ys)
self._clean_data(data, ('xs', 'ys'), element.dimensions())
self._categorize_data(data, ('xs', 'ys'), element.dimensions())
return (data, dict(self._mapping))


Expand Down
15 changes: 9 additions & 6 deletions holoviews/plotting/bokeh/element.py
Expand Up @@ -555,10 +555,13 @@ def _update_ranges(self, element, ranges):
if self.invert_yaxis: yfactors = yfactors[::-1]
y_range.factors = yfactors

def _clean_data(self, data, cols, dims):

def _categorize_data(self, data, cols, dims):
"""
Cleans the data before instantiating the datasource to handle
categorical axes correctly.
Transforms non-string or integer types in datasource if the
axis to be plotted on is categorical. Accepts the column data
sourcec data, the columns corresponding to the axes and the
dimensions for each axis, changing the data inplace.
"""
if self.invert_axes:
cols = cols[::-1]
Expand All @@ -567,7 +570,7 @@ def _clean_data(self, data, cols, dims):
for i, col in enumerate(cols):
column = data[col]
if (isinstance(ranges[i], FactorRange) and
(isinstance(column, list) or column.dtype.kind not in 'iOSU')):
(isinstance(column, list) or column.dtype.kind not in 'iSU')):
data[col] = [dims[i].pprint_value(v) for v in column]


Expand All @@ -578,8 +581,8 @@ def _get_factors(self, element):
xdim, ydim = element.dimensions()[:2]
xvals, yvals = [element.dimension_values(i, False)
for i in range(2)]
coords = ([x if xvals.dtype.kind in 'iOSU' else xdim.pprint_value(x) for x in xvals],
[y if yvals.dtype.kind in 'iOSU' else ydim.pprint_value(y) for y in yvals])
coords = ([x if xvals.dtype.kind in 'iSU' else xdim.pprint_value(x) for x in xvals],
[y if yvals.dtype.kind in 'iSU' else ydim.pprint_value(y) for y in yvals])
if self.invert_axes: coords = coords[::-1]
return coords

Expand Down
4 changes: 2 additions & 2 deletions holoviews/plotting/bokeh/raster.py
Expand Up @@ -152,9 +152,9 @@ def get_data(self, element, ranges=None, empty=False):
else:
xdim, ydim = aggregate.dimensions()[:2]
xvals, yvals, zvals = (aggregate.dimension_values(i) for i in range(3))
if xvals.dtype.kind not in 'iOSU':
if xvals.dtype.kind not in 'iSU':
xvals = [xdim.pprint_value(xv) for xv in xvals]
if yvals.dtype.kind not in 'iOSU':
if yvals.dtype.kind not in 'iSU':
yvals = [ydim.pprint_value(yv) for yv in yvals]
data = {x: xvals, y: yvals, 'zvalues': zvals}

Expand Down

0 comments on commit 8b05b57

Please sign in to comment.