首页 > 解决方案 > networkx 中的边长标签没有很好地表示

问题描述

这是关于搜索引擎(SE)的。我试图用图表来表示一个 SE 与其他 SE 之间的距离。我给他们贴上了标签:

DG.add_edge(se1, se2, length=distance[se1][se2])

然后标记边缘

nx.draw_networkx_edge_labels(DG, pos=pos, font_size=8) 但输出非常不连贯:

在此处输入图像描述

样本

[('AllTheInternet', 'Yippy', {'length': 0.727}),
 ('AOL', 'Yippy', {'length': 0.446}),
 ('Ask', 'Yippy', {'length': 0.88}),
 ('Bing', 'Yippy', {'length': 0.765}),
 ('DirectHit', 'Yippy', {'length': 0.733}),
 ('Duckduckgo', 'Yippy', {'length': 0.795}),
 ('Ecosia', 'Yippy', {'length': 0.793}),
 ('Google', 'Yippy', {'length': 0.852}),
 ('Lilo', 'Yippy', {'length': 0.43}),
 ('Lycos', 'Yippy', {'length': 0.766}),
 ('Qwant', 'Yippy', {'length': 0.834}),
 ('Startpage', 'Yippy', {'length': 0.77}),
 ('Teoma', 'Yippy', {'length': 0.776}),
 ('Yahoo', 'Yippy', {'length': 0.445})] 

标签: python-3.xnetworkx

解决方案


不确定您的哪个步骤导致错误。确保edgelist在绘制图形时指定一个,以防万一。否则,这可能会导致旧版本的差异。以下似乎按预期产生:

edgelist = [('AllTheInternet', 'Yippy', {'length': 0.727}), ('AOL', 'Yippy', {'length': 0.446}), 
            ('Ask', 'Yippy', {'length': 0.88}), ('Bing', 'Yippy', {'length': 0.765}),
            ('DirectHit', 'Yippy', {'length': 0.733}), 
            ('Duckduckgo', 'Yippy', {'length': 0.795}), ('Ecosia', 'Yippy', {'length': 0.793}), 
            ('Google', 'Yippy', {'length': 0.852}), ('Lilo', 'Yippy', {'length': 0.43}), 
            ('Lycos', 'Yippy', {'length': 0.766}), ('Qwant', 'Yippy', {'length': 0.834}), 
            ('Startpage', 'Yippy', {'length': 0.77}), ('Teoma', 'Yippy', {'length': 0.776}), 
            ('Yahoo', 'Yippy', {'length': 0.445})]

G = nx.DiGraph()
G.add_edges_from(edgelist)

plt.figure(figsize=(20,12))
pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G, pos=pos, withlabels=True, 
                       node_size=1200, node_color='lightblue')
nx.draw_networkx_labels(G, pos=pos)
nx.draw_networkx_edges(G, edgelist=edgelist, pos=pos)
nx.draw_networkx_edge_labels(G, pos=pos)
plt.box(False)

在此处输入图像描述


推荐阅读