绘制networkx图:节点旁边的节点标签?

时间:2016-10-05 14:03:57

标签: python nodes networkx

我正在尝试绘制关联规则,并且很难让下面的节点标签“跟随”节点。也就是说,我希望每个标签自动靠近其各自的节点,而不必对任何值进行硬编码。下面的输出甚至不包括一些节点标签。如何使这些标签动态跟随节点?

import pandas as pd
import networkx as nx
import matlotlib.pyplot as plt    

df = pd.DataFrame({'node1': ['candy', 'cookie', 'beach', 'mark', 'black'],
                   'node2': ['beach', 'beach', 'cookie', 'beach', 'mark'], 
                   'weight': [10, 5, 3, 4, 20]})

G = nx.Graph()

for idx in df.index:
    node1 = df.loc[idx, 'node1']
    node2 = df.loc[idx, 'node2']
    weight = df.loc[idx, 'weight']
    G.add_edge(node1, node2, weight = weight)

nx.draw(G, node_size = 100)

pos = nx.spring_layout(G)

nx.draw_networkx_labels(G, pos = pos, font_size = 14, with_labels = True)

plt.draw()
plt.show()

enter image description here

1 个答案:

答案 0 :(得分:3)

致电时

nx.draw(G, node_size = 100)

然后

pos = nx.spring_layout(G)

您正在创建两组职位。解决方案是首先获取位置,然后将它们用于节点和标签。

pos = nx.spring_layout(G)
nx.draw(G, pos = pos, node_size = 100)
# do stuff to pos if you want offsets
nx.draw_networkx_labels(G, pos = pos, font_size = 14, with_labels = True)