Графики в networkx
являются отдельными объектами друг от друга. Вы абсолютно не можете иметь ссылку от Node1
в Graph1
до Node2
в Graph2
. Единственный способ представить похожее поведение - составить два графика и создать связь между их узлами. Если два графика не пересекаются, вы можете использовать функцию union . Если они имеют одинаковые узлы, вы должны использовать функцию compose . Но обратите внимание на две важные вещи:
- Обе функции возвращают новый граф. Старые графики не меняются.
- Если вы используете функцию
compose
, все элементы, которые могут быть объединены, будут объединены. Например:
import networkx as nx
G=nx.DiGraph()
G.add_nodes_from([1, 2, 3])
G.add_edges_from([(1, 2), (2, 3)])
H=nx.DiGraph()
H.add_nodes_from([5, 2, 3])
H.add_edges_from([(5, 2), (2, 3)])
Q = nx.compose(G, H)
Q.nodes()
NodeView((1, 2, 3, 5))
Узлы 1
и 2
были объединены. Поэтому вы должны проверить все свои узлы на обоих графиках, если не хотите внезапного слияния.