用多个图构建网络
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()
我想创建一个由图的副本组成的网络,例如空手道俱乐部网络。所以,我希望我的整个网络有,例如,空手道俱乐部网络的 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()