diff --git a/holoviews/core/operation.py b/holoviews/core/operation.py index 6262264d11..99f20e596d 100644 --- a/holoviews/core/operation.py +++ b/holoviews/core/operation.py @@ -136,7 +136,7 @@ def __call__(self, element, **params): kdims=element.kdims) elif dynamic: from ..util import Dynamic - streams = getattr(self, 'streams', []) + streams = getattr(self.p, 'streams', []) processed = Dynamic(element, streams=streams, operation=self, kwargs=params) elif isinstance(element, ViewableElement): diff --git a/holoviews/core/util.py b/holoviews/core/util.py index a4a1ca8698..59d99dfd35 100644 --- a/holoviews/core/util.py +++ b/holoviews/core/util.py @@ -954,19 +954,20 @@ def get_dynamic_item(map_obj, dimensions, key): and a corresponding key. The dimensions must be a subset of the map_obj key dimensions. """ - if key == () and not dimensions or not map_obj.kdims: - return key, map_obj[()] + dmaps = map_obj.traverse(lambda x: x, ['DynamicMap']) + dmap = dmaps[0] if dmaps else map_obj + if key == () and (not dimensions or not dmap.kdims): + return key, map_obj.map(lambda x: x[()], ['DynamicMap', 'HoloMap']) elif isinstance(key, tuple): dims = {d.name: k for d, k in zip(dimensions, key) if d in map_obj.kdims} key = tuple(dims.get(d.name) for d in map_obj.kdims) - el = map_obj.select([lambda x: type(x).__name__ == 'DynamicMap'], - **dims) + el = map_obj.select(['DynamicMap', 'HoloMap'], **dims) elif key < map_obj.counter: key_offset = max([key-map_obj.cache_size, 0]) key = map_obj.keys()[min([key-key_offset, len(map_obj)-1])] - el = map_obj[key] + el = map_obj.map(lambda x: x[key], ['DynamicMap']) elif key >= map_obj.counter: el = next(map_obj) key = list(map_obj.keys())[-1] diff --git a/holoviews/plotting/bokeh/chart.py b/holoviews/plotting/bokeh/chart.py index 13b5e113a0..2c9c8e06d8 100644 --- a/holoviews/plotting/bokeh/chart.py +++ b/holoviews/plotting/bokeh/chart.py @@ -239,7 +239,7 @@ def get_extents(self, element, ranges): -class SideHistogramPlot(HistogramPlot, ColorbarPlot): +class SideHistogramPlot(ColorbarPlot, HistogramPlot): style_opts = HistogramPlot.style_opts + ['cmap'] diff --git a/holoviews/plotting/plot.py b/holoviews/plotting/plot.py index 618e241f00..d52691a18f 100644 --- a/holoviews/plotting/plot.py +++ b/holoviews/plotting/plot.py @@ -943,7 +943,7 @@ def _get_frame(self, key): if not isinstance(key, tuple): key = (key,) nthkey_fn = lambda x: zip(tuple(x.name for x in x.kdims), list(x.data.keys())[min([key[0], len(x)-1])]) - if key == self.current_key: + if key == self.current_key and not self._force: return self.current_frame else: self.current_key = key