Skip to content

Commit

Permalink
Fixed bug in combining data range and soft_range (#3065)
Browse files Browse the repository at this point in the history
  • Loading branch information
philippjfr authored and jlstevens committed Oct 9, 2018
1 parent fd324f9 commit b4f2b53
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 6 deletions.
4 changes: 3 additions & 1 deletion holoviews/core/util.py
Expand Up @@ -852,6 +852,7 @@ def range_pad(lower, upper, padding=None, log=False):
start, end = lower-lpad, upper+upad
else:
start, end = lower, upper

return start, end


Expand All @@ -861,7 +862,8 @@ def dimension_range(lower, upper, hard_range, soft_range, padding=None, log=Fals
with the Dimension soft_range and range.
"""
lower, upper = range_pad(lower, upper, padding, log)
lower, upper = max_range([(lower, upper), soft_range])
lower = max_range([(lower, None), (soft_range[0], None)])[0]
upper = max_range([(None, upper), (None, soft_range[1])])[1]
dmin, dmax = hard_range
lower = lower if dmin is None or not isfinite(dmin) else dmin
upper = upper if dmax is None or not isfinite(dmax) else dmax
Expand Down
4 changes: 2 additions & 2 deletions holoviews/plotting/bokeh/chart.py
Expand Up @@ -345,7 +345,7 @@ def get_extents(self, element, ranges, range_type='combined'):
ydim = element.get_dimension(1)
s0, s1 = ranges[ydim.name]['soft']
s0 = min(s0, 0) if isfinite(s0) else 0
s0 = max(s1, 0) if isfinite(s1) else 0
s1 = max(s1, 0) if isfinite(s1) else 0
ranges[ydim.name]['soft'] = (s0, s1)
return super(HistogramPlot, self).get_extents(element, ranges, range_type)

Expand Down Expand Up @@ -592,7 +592,7 @@ def get_extents(self, element, ranges, range_type='combined'):
ydim = element.get_dimension(1)
s0, s1 = ranges[ydim.name]['soft']
s0 = min(s0, 0) if isfinite(s0) else 0
s0 = max(s1, 0) if isfinite(s1) else 0
s1 = max(s1, 0) if isfinite(s1) else 0
ranges[ydim.name]['soft'] = (s0, s1)
l, b, r, t = super(SpikesPlot, self).get_extents(element, ranges, range_type)
if len(element.dimensions()) == 1 and range_type != 'hard':
Expand Down
4 changes: 2 additions & 2 deletions holoviews/plotting/mpl/chart.py
Expand Up @@ -366,7 +366,7 @@ def get_extents(self, element, ranges, range_type='combined'):
ydim = element.get_dimension(1)
s0, s1 = ranges[ydim.name]['soft']
s0 = min(s0, 0) if isfinite(s0) else 0
s0 = max(s1, 0) if isfinite(s1) else 0
s1 = max(s1, 0) if isfinite(s1) else 0
ranges[ydim.name]['soft'] = (s0, s1)
return super(HistogramPlot, self).get_extents(element, ranges, range_type)

Expand Down Expand Up @@ -973,7 +973,7 @@ def get_extents(self, element, ranges, range_type='combined'):
ydim = element.get_dimension(1)
s0, s1 = ranges[ydim.name]['soft']
s0 = min(s0, 0) if isfinite(s0) else 0
s0 = max(s1, 0) if isfinite(s1) else 0
s1 = max(s1, 0) if isfinite(s1) else 0
ranges[ydim.name]['soft'] = (s0, s1)
l, b, r, t = super(SpikesPlot, self).get_extents(element, ranges, range_type)
if len(element.dimensions()) == 1 and range_type != 'hard':
Expand Down
14 changes: 13 additions & 1 deletion holoviews/tests/plotting/bokeh/testoverlayplot.py
Expand Up @@ -2,7 +2,7 @@

from holoviews.core import NdOverlay, HoloMap, DynamicMap
from holoviews.core.options import Cycle
from holoviews.element import Curve, Points, ErrorBars, Text
from holoviews.element import Curve, Points, ErrorBars, Text, VLine

from .testplot import TestBokehPlot, bokeh_renderer

Expand Down Expand Up @@ -169,3 +169,15 @@ def cb(X):
self.assertEqual(len(plot.subplots), 3)
for i, subplot in enumerate(plot.subplots.values()):
self.assertEqual(subplot.cyclic_index, i)

def test_complex_range_example(self):
errors = [(0.1*i, np.sin(0.1*i), (i+1)/3., (i+1)/5.) for i in np.linspace(0, 100, 11)]
errors = ErrorBars(errors, vdims=['y', 'yerrneg', 'yerrpos']).redim.range(y=(0, None))
overlay = Curve(errors) * errors * VLine(4)
plot = bokeh_renderer.get_plot(overlay)
x_range = plot.handles['x_range']
y_range = plot.handles['y_range']
self.assertEqual(x_range.start, 0)
self.assertEqual(x_range.end, 10.0)
self.assertEqual(y_range.start, 0)
self.assertEqual(y_range.end, 19.655978889110628)

0 comments on commit b4f2b53

Please sign in to comment.