Отдельные узлы и инструменты для наведения кромки в Bokeh? - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь получить отдельные всплывающие подсказки для узлов и ребер в Bokeh, но не смог заставить его работать. Может кто-то указать, что я делаю не так? Я считаю, что код должен выглядеть примерно так:

from bokeh.io import show, output_notebook
from bokeh.models import Plot, Range1d, MultiLine, Circle, HoverTool
from bokeh.models.graphs import from_networkx, NodesAndLinkedEdges, EdgesAndLinkedNodes
import networkx as nx
output_notebook()

# Generate data
G = nx.karate_club_graph()
nx.set_edge_attributes(G, nx.edge_betweenness_centrality(G), "betweenness_centrality")

# Setup plot
plot = Plot(plot_width=400, plot_height=400,
            x_range=Range1d(-1.1, 1.1), y_range=Range1d(-1.1, 1.1))

graph_renderer = from_networkx(G, nx.spring_layout, scale=1, center=(0, 0))
graph_renderer.node_renderer.glyph = Circle(size=15)
graph_renderer.edge_renderer.glyph = MultiLine(line_alpha=0.8, line_width=1)

plot.renderers.append(graph_renderer)

# Add hover
node_hover_tool = HoverTool(renderers=[graph_renderer.node_renderer], 
                            tooltips=[("index", "@index"), ("club", "@club")])
edge_hover_tool = HoverTool(renderers=[graph_renderer.edge_renderer], 
                            tooltips=[("betweenness_centrality", "@betweenness_centrality")],
                            line_policy="interp")

plot.add_tools(node_hover_tool, edge_hover_tool)

# Show
show(plot)

Но я не вижу, чтобы это зависало. Я попробовал несколько вещей, чтобы обойти это:

  • Если я уберу аргумент renderers, я смогу немного навести указатель мыши, но это не относится к нужным глифам.
  • Если я уберу аргумент renderers из обоих HoverTool s, я смогу получить правильные всплывающие подсказки на узлах вместе с betweenness_centrality: ??
  • Если я удаляю аргумент renderers из обоих HoverTool s и добавляю graph_renderer.inspection_policy = NodesAndLinkedEdges(), я получаю правильные всплывающие подсказки на узлах
  • Если я уберу аргумент renderers из обоих HoverTool с и добавлю graph_renderer.inspection_policy = EdgesAndLinkedNodes(), я получу правильные всплывающие подсказки по краям

Я полагаю, что этот вопрос задавался ранее в группе Google здесь , но не получил ответа.

Спасибо за любую помощь!

...