【发布时间】:2021-12-11 19:46:08
【问题描述】:
我用 df 的 Bokeh networkx 创建了一个网络图:
df = pd.DataFrame('source': [1,2,3], 'target': ['a', 'b', 'c], 'name': ['a1', 'b2', 'c3'])
来自source 列的源节点和来自target 列的目标节点
有什么办法可以显示
HoverTool(tooltips = [("SOURCE", "$source"), ("NAME", "$name")])
对于“源”节点和
HoverTool(tooltips = [("TARGET", "$target")])
对于目标节点?
我的代码如下:
import pandas as pd
from bokeh.io import show
import networkx as nx
from bokeh.models import Plot, MultiLine, Circle
from bokeh.models.graphs import from_networkx
net_graph = networkx.from_pandas_edgelist(df, 'source', 'target', 'name')
for index, row in df.iterrows():
net_graph.nodes[row['source']]['source_hover'] = row['source']
net_graph.nodes[row['source']]['name hover'] = row['name']
net_graph.nodes[row['target']]['target hover'] = row['target']
graph_plot = Plot(plot_width = 800, plot_height = 600, x_range = Range1d(-1.1, 1.1), y_range = Range1d(-1.1, 1.1))
graph_setup = from_networkx(net_graph, nx.spring_layout, scale = 1, center = (0, 0))
graph_plot.add_tools(HoverTool(renderers=[graph_setup], tooltips=[("SOURCE", "@source_hover"), ("NAME", "@name_hover")]))
graph_plot.add_tools(HoverTool(renderers=[graph_setup], tooltips=[("TARGET", "@target_hover")]))
graph_setup.node_renderer.glyph = Circle(size = 20, fill_color = 'red')
graph_setup.edge_renderer.glyph = MultiLine(line_color = "grey", line_alpha = 0.8, line_width = 1)
graph_plot.renderers.append(graph_setup)
show(graph_plot)
【问题讨论】: