【发布时间】:2021-11-11 06:34:18
【问题描述】:
我想创建一个由图形副本组成的网络,例如空手道俱乐部网络。所以,我希望我的整个网络有,例如,空手道俱乐部网络的 2 个副本,其中两个空手道网络通过添加边连接。
有没有办法在networkx中做到这一点?到目前为止,我已经创建了空手道俱乐部网络的副本,但我正在努力将它们放入一个网络中以便它们被镜像。
提前致谢。
【问题讨论】:
标签: python graph nodes networkx
我想创建一个由图形副本组成的网络,例如空手道俱乐部网络。所以,我希望我的整个网络有,例如,空手道俱乐部网络的 2 个副本,其中两个空手道网络通过添加边连接。
有没有办法在networkx中做到这一点?到目前为止,我已经创建了空手道俱乐部网络的副本,但我正在努力将它们放入一个网络中以便它们被镜像。
提前致谢。
【问题讨论】:
标签: python graph nodes networkx
您正在寻找compose 方法,请参阅此问题的更多解释:Combine (join) networkx Graphs
如果你想加入同一个图,你需要确保节点集是不相交的,这可以通过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()
【讨论】: