NetworkX系列教程(3)-手动创建graph

不可否认,日常中我们使用最多的还是,使用自己的数据去手动创建自己的图形,而不是使用生成器,现从给graph添加和边入手,讲解手动创建graph.

如果代码出现找不库,请返回第一个教程,把库文件导入.

给graph添加节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from math import ceil

#该函数由于显示一组graph,传上来的是一组graph和这些graph的描述.
def ShowGraph(glists,ginfo,rowsize=4):

#每行放rowsize个,计算可以放多少行
row=ceil(len(glists)/rowsize)

#定义组图
plt.subplots(row,rowsize,figsize=(15,3))

#开始画图
for ind in range(len(glists)):
#定义子图
plt.subplot(row,rowsize,ind+1)
nx.draw(glists[ind],with_labels=True, font_weight='bold')

#设置图片
plt.title(ginfo[ind],fontproperties=myfont)
plt.axis('on')
plt.xticks([])
plt.yticks([])
plt.show()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#添加单个节点
G1=nx.Graph()
G1.add_node(1)
G1.add_node("spam")

#添加一组节点
G2=nx.Graph()
G2.add_nodes_from([2, 3])
G2.add_nodes_from("spam")

#使用生成器
G3=nx.Graph()
H = nx.path_graph(10)
G3.add_nodes_from(H)

#注意:G1.add_nodes_from(H)表示用H中的节点表示G1这个graph,如果要往G1这个graph添加H这个graph,形成graph中的graph,可以使用以下命令
G4= nx.Graph()
G4.add_node(1)
G4.add_node(H)

glists=[G1,G2,G3,G4]
ginfo=['添加单个节点','添加一组节点','使用生成器','添加子图']
ShowGraph(glists,ginfo)

png

给graph添加边

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#删除前面的graph
G1.clear()
G2.clear()
G3.clear()
G4.clear()

#添加单边
G1=nx.Graph()
G1.add_edge(1,2)
G1.add_edge(3, 'm')

#添加一组边
G2=nx.Graph()
e=(2,3)
G2.add_edge(*e)

#添加多组边
G3=nx.Graph()
G3.add_edges_from([(3,4),(4,2)])

#使用边生成器
G4= nx.Graph()
H = nx.path_graph(10)
G4.add_edges_from(H.edges)

#添加一组有权边
G5=nx.Graph()
G5.add_weighted_edges_from([('a', 'b', 5.0), ('b', 'c', 3.0), ('a', 'c', 1.0), ('c', 'd', 7.3)]) #边上权重显示看设置graph信息->指定边属性

glists=[G1,G2,G3,G4,G5]
ginfo=['添加单边','添加一组边','添加多组边','使用边生成器','添加一组有权边']
ShowGraph(glists,ginfo,rowsize=5)

png