Skip to content

Commit a9e4ccb

Browse files
committed
fix: Support hovertool across multiple elements
1 parent c717261 commit a9e4ccb

1 file changed

Lines changed: 19 additions & 5 deletions

File tree

holoviews/plotting/bokeh/element.py

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -648,14 +648,20 @@ def _get_hover_data(self, data, element, dimensions=None):
648648
If empty initializes with no data.
649649
650650
"""
651-
if 'hover' not in self.handles or self.static_source:
651+
if 'hover' not in self.handles and not self.overlay_dims:
652652
return
653653

654-
for d in (dimensions or element.dimensions()):
655-
dim = util.dimension_sanitizer(d.name)
656-
if dim not in data:
657-
data[dim] = element.dimension_values(d)
654+
if 'hover' in self.handles and not self.static_source:
655+
for d in (dimensions or element.dimensions()):
656+
dim = util.dimension_sanitizer(d.name)
657+
if dim not in data:
658+
data[dim] = element.dimension_values(d)
659+
660+
if not data:
661+
return
658662

663+
# Always add overlay_dims to data, as these identify the element in the overlay
664+
# and are needed for hover tooltips even when the subplot doesn't have its own hover tool
659665
for k, v in self.overlay_dims.items():
660666
dim = util.dimension_sanitizer(k.name)
661667
if dim not in data:
@@ -3596,6 +3602,14 @@ def update_frame(self, key, ranges=None, element=None):
35963602
if not self.tabs:
35973603
init_kwargs['plot'] = self.handles['plot']
35983604
self._create_dynamic_subplots(key, items, ranges, **init_kwargs)
3605+
if overlay_hover := self.handles.get('hover'):
3606+
if overlay_hover.renderers == 'auto':
3607+
overlay_hover.renderers = []
3608+
for k, _ in items:
3609+
if k in self.subplots and 'glyph_renderer' in self.subplots[k].handles:
3610+
renderer = self.subplots[k].handles['glyph_renderer']
3611+
if renderer not in overlay_hover.renderers:
3612+
overlay_hover.renderers.append(renderer)
35993613
if not self.overlaid and not self.tabs:
36003614
self._process_legend(element)
36013615

0 commit comments

Comments
 (0)