使用您的代码,您的图表不会按您的预期显示。如果你这样做:
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()
you will see your graph as:
这是由于以下逻辑G.add_edge("A", "B")
:
- If
G
没有id为“A”的节点,添加它。
- If
G
没有id为“B”的节点,添加它。
- 用新边将“A”连接到“B”。
因此,您只创建五个节点,而不是如图所示的六个。
EditNetworkx 可以将任何哈希值作为节点的值,并且在图中它使用 str(node) 来标记每个圆。因此,我们可以简单地定义我们自己的 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()
gives us
and so what you wanted.