import networkx as nx
import matplotlib.pyplot as plt
G = nx.DiGraph()
G.add_node("start",subset=0)
G.add_node("2",subset=1)
G.add_node("3",subset=1)
G.add_node("4",subset=1)
G.add_node("5",subset=1)
G.add_node("6",subset=1)
G.add_node("7",subset=1)
for i in range(2,8):
G.add_edge("start",str(i))
G.add_edge( str(i), "end")
G.add_node("end",subset=2)
pos = nx.multipartite_layout(G)
nx.draw_networkx(G,node_size=1000,pos=pos)
plt.show()
上面这段代码会生成像神经网络那样的层次连接图。draw_networkx的pos参数提供了图显示布局layout,multipartite_layout会根据图节点的subset将节点分成组然后对齐。
默认情形下,draw_networkx使用的是spring_layout。
if pos is None:
pos = nx.drawing.spring_layout(G) # default to spring layout
(上面那张整齐的图会以诡异的方式,随机性地被撑开。spring_layout使用的是什么算法还没有认真研究过)
networkx 为图的显示提供了很多种layout,详见networkx\drawing\layout.py