这个问题是关于尝试使用 NetworkX对相互依赖的网络进行建模。有专用的包(例如Pymnet),但它们似乎不如 NetworkX 灵活。顺便说一句,我想给 NetworkX 最后一次机会。
因此,假设我们有 2 个单独的图 G1 和 G2,我们将它们绘制在同一个图中:
import networkx as nx
import matplotlib.pyplot as plt
G1=nx.barabasi_albert_graph(3, 2) #n=3, m=2 (number of initial links)
G2=nx.barabasi_albert_graph(3, 2)
pos1=nx.spring_layout(G1)
pos2=nx.spring_layout(G2)
nx.draw_networkx(G1,pos=pos1,node_color='red') #G1 is red
nx.draw_networkx(G2,pos=pos2,node_color='green') #G2 is green
现在,如果我们尝试将 G1 的节点 0 与 G2 的节点 1 连接起来:
G1.add_edge(G1.nodes()[0], G2.nodes()[1])
我们没有收到任何错误,但如果您再次绘制图表,图像与之前完全相同。如果您检查边数,您会得到与以前相同的结果:
In[17]: G1.edges()
Out[17]: [(0, 1), (0, 2), (1, 2)]
In[18]: G2.edges()
Out[18]: [(0, 2), (1, 2)]
意思是边基本上没有添加,或者添加了但不显示,或者添加了,但是因为它从一个图形运行到另一个图形,它不属于其中任何一个。
您如何建议在 NetworkX 中创建从 G1 到 G2 的互连,而不求助于其他包?