Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes for compatibility with bokeh categorical handling #1933

Merged
merged 1 commit into from Sep 28, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
25 changes: 20 additions & 5 deletions holoviews/plotting/bokeh/chart.py
Expand Up @@ -661,8 +661,14 @@ def _get_factors(self, element):
Get factors for categorical axes.
"""
xdim, ydim = element.dimensions()[:2]
gdim = element.get_dimension(self.group_index)
sdim = element.get_dimension(self.stack_index)
if self.group_index and self.group_index < element.ndims:
gdim = element.get_dimension(self.group_index)
else:
gdim = None
if self.stack_index and self.stack_index < element.ndims:
sdim = element.get_dimension(self.stack_index)
else:
sdim = None
xvals = element.dimension_values(0, False)
xvals = [x if xvals.dtype.kind in 'SU' else xdim.pprint_value(x) for x in xvals]
if bokeh_version >= '0.12.7' and gdim and not sdim:
Expand All @@ -683,7 +689,10 @@ def _get_axis_labels(self, *args, **kwargs):
if self.batched:
element = element.last
xlabel = dim_axis_label(element.kdims[0])
gdim = element.get_dimension(self.group_index)
if self.group_index and self.group_index < element.ndims:
gdim = element.get_dimension(self.group_index)
else:
gdim = None
if bokeh_version >= '0.12.7' and gdim:
xlabel = ', '.join([xlabel, dim_axis_label(gdim)])
return (xlabel, dim_axis_label(element.vdims[0]), None)
Expand Down Expand Up @@ -728,8 +737,14 @@ def _glyph_properties(self, *args):

def get_data(self, element, ranges, empty):
# Get x, y, group, stack and color dimensions
group_dim = element.get_dimension(self.group_index)
stack_dim = element.get_dimension(self.stack_index)
if self.group_index and self.group_index < element.ndims:
group_dim = element.get_dimension(self.group_index)
else:
group_dim = None
if self.stack_index and self.stack_index < element.ndims:
stack_dim = element.get_dimension(self.stack_index)
else:
stack_dim = None
if stack_dim:
group_dim = stack_dim
grouping = 'stacked'
Expand Down
4 changes: 2 additions & 2 deletions holoviews/plotting/bokeh/element.py
Expand Up @@ -559,9 +559,9 @@ def _update_ranges(self, element, ranges):
if any(isinstance(ax_range, FactorRange) for ax_range in [x_range, y_range]):
xfactors, yfactors = self._get_factors(element)
framewise = self.framewise
if not self.drawn or (not self.model_changed(x_range) and framewise):
if not self.drawn or (not self.model_changed(x_range) and framewise) or xfactors:
self._update_range(x_range, l, r, xfactors, self.invert_xaxis, self._shared['x'], self.logx)
if not self.drawn or (not self.model_changed(y_range) and framewise):
if not self.drawn or (not self.model_changed(y_range) and framewise) or yfactors:
self._update_range(y_range, b, t, yfactors, self.invert_yaxis, self._shared['y'], self.logy)


Expand Down