用多个图构建网络

Constructing a network with multiple graphs

我想创建一个由图的副本组成的网络,例如空手道俱乐部网络。所以,我希望我的整个网络有,例如,空手道俱乐部网络的 2 个副本,其中两个空手道网络通过添加边连接。

有什么方法可以在 networkx 中做到这一点?到目前为止,我已经创建了 Karate Club 网络的副本,但我正在努力将它们放入一个网络中以进行镜像。

提前致谢。

您正在寻找 compose method, see more explanation on this question:

如果要加入同一个图,需要保证节点集不相交,可以通过convert_node_labels_to_integers实现。具有两个空手道俱乐部网络和图形之间的边的完整示例:

import networkx as nx
import matplotlib.pylab as plt

karate_1 = nx.karate_club_graph()
karate_2 = nx.karate_club_graph()

# relabel nodes to create disjoint nodes
karate_1 = nx.convert_node_labels_to_integers(karate_1, first_label=0)
print(len(karate_1))
karate_2 = nx.convert_node_labels_to_integers(karate_2, first_label=len(karate_1))

joint_graph = nx.compose(karate_1, karate_2)
print(len(joint_graph))

joint_graph.add_edge(0, 34)

nx.draw(joint_graph)
plt.show()