Этот вопрос касается попытки смоделировать взаимозависимые сети с помощью 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
Теперь, если мы попытаемся соединить узел 0 G1 с узлом 1 G2:
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)]
Это означает, что ребро в основном не было добавлено, или оно было добавлено и не отображается, или оно было добавлено, но поскольку оно проходит от одного графа к другому, оно не принадлежит ни одному из них.
Как вы предлагаете создать это соединение от G1 к G2 в NetworkX, не прибегая к другим пакетам?