在NetworkX中,创建一个MultiDiGraph(多重有向图)可以使用以下代码:
import networkx as nx
G = nx.MultiDiGraph()
接下来,我们可以使用add_edge方法添加有向边,并为每条边添加数据属性,如下所示:
# 添加有向边(节点1到节点2),并为每条边添加数据属性
G.add_edge('node1', 'node2', weight=2, relation='child')
G.add_edge('node2', 'node3', weight=3, relation='child')
G.add_edge('node2', 'node4', weight=4, relation='parent')
G.add_edge('node3', 'node5', weight=5, relation='sibling')
我们也可以使用add_edges_from方法添加多个边:
# 添加多个有向边
edges = [('node4', 'node5'), ('node5', 'node6')]
data = {'weight': 6, 'relation': 'parent'}
G.add_edges_from(edges, **data)
一旦多重有向图被创建和填充,我们可以使用许多NetworkX函数和方法来浏览图形结构和属性。例如,我们可以使用out_edges和in_edges方法来查找给定节点的所有出度和入度边:
# 查找节点的所有出度和入度边
print(list(G.out_edges('node2', data=True)))
print(list(G.in_edges('node5', data=True)))
我们可以使用degree方法查找每个节点的度数(出度+入度),并可以通过指定in或out参数来查找节点的入度或出度。我们可以设置weight参数为“weight”数据属性来查找带权度数:
# 查找每个节点的出度入度和带权度数
print(G.degree('node2', weight='weight'))
print(G.in_degree('node5', weight='weight'))
我们