diff --git a/holoviews/plotting/bokeh/graphs.py b/holoviews/plotting/bokeh/graphs.py index f1fc62d6d7..16e279290d 100644 --- a/holoviews/plotting/bokeh/graphs.py +++ b/holoviews/plotting/bokeh/graphs.py @@ -59,7 +59,9 @@ def _hover_opts(self, element): if self.inspection_policy == 'nodes': dims = element.nodes.dimensions()[2:] elif self.inspection_policy == 'edges': - dims = element.kdims+element.vdims + kdims = [(kd.pprint_label, '@{%s}' % ref) + for kd, ref in zip(element.kdims, ['start', 'end'])] + dims = kdims+element.vdims else: dims = [] return dims, {} diff --git a/tests/testbokehgraphs.py b/tests/testbokehgraphs.py index 569058ca45..b0034e5b1b 100644 --- a/tests/testbokehgraphs.py +++ b/tests/testbokehgraphs.py @@ -84,6 +84,15 @@ def test_graph_inspection_policy_edges(self): self.assertEqual(hover.tooltips, [('start', '@{start}'), ('end', '@{end}')]) self.assertIn(renderer, hover.renderers) + def test_graph_inspection_policy_edges_non_default_names(self): + graph = self.graph.redim(start='source', end='target') + plot = bokeh_renderer.get_plot(graph.opts(plot=dict(inspection_policy='edges'))) + renderer = plot.handles['glyph_renderer'] + hover = plot.handles['hover'] + self.assertIsInstance(renderer.inspection_policy, EdgesAndLinkedNodes) + self.assertEqual(hover.tooltips, [('source', '@{start}'), ('target', '@{end}')]) + self.assertIn(renderer, hover.renderers) + def test_graph_inspection_policy_none(self): plot = bokeh_renderer.get_plot(self.graph.opts(plot=dict(inspection_policy=None))) renderer = plot.handles['glyph_renderer']