使用您的代码,您的图表不会像您期望的那样出现.如果你这样做:
import pylab as p
import networkx as nx
G = nx.Graph()
G.add_edge("A","B")
G.add_edge("A","H")
G.add_edge("H","C")
G.add_edge("B","C")
G.add_edge("B","D")
nx.draw(G)
p.show()
你会看到你的图表:
这是由于G.add_edge(“A”,“B”)的逻辑:
>如果G没有id为“A”的节点,请添加它.
>如果G没有id为“B”的节点,请添加它.
>使用新边缘将“A”连接到“B”.
因此,您只需创建五个节点,而不是图片中的六个节点.
编辑
Networkx可以将任何hashable作为节点的值,并且在图中它使用str(节点)标记每个circle.所以我们可以简单地定义我们自己的Node类(您可能想要调用Server?)并为其提供所需的行为.
import pylab as p
import networkx as nx
class Node(object):
nodes = []
def __init__(self, label):
self._label = label
def __str__(self):
return self._label
nodes = [Node(l) for l in ["A","B","C","C","D","H"]]
edges = [(0,1),(0,5),(5,2),(1,3),(1,4)]
G = nx.Graph()
for i,j in edges:
G.add_edge(nodes[i], nodes[j])
nx.draw(G)
p.show()
给我们
你想要什么