我正在networkx中寻找一种通过另一个图的节点将两个图链接起来的方法。链接后,结果图(另一个图)除包含两个图的节点外,还包含两个图的节点。 例如:
G=nx.DiGraph()
G.add_node(1)
G.add_node(2)
G.add_edge(1,2)
H=nx.DiGraph()
H.add_node(3)
H.add_node(4)
H.add_edge(3,4)
C=nx.DiGraph()
C.add_node(0)
C.add_node(5)
现在我想将C图中的节点0链接到G和H图(1,3)的第一个节点,并将两个图的最后节点(G和H)链接到C图中的节点5。 。
我尝试了compose函数,但没有帮助。
答案 0 :(得分:0)
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
已合并。因此,如果您不想突然合并,则应检查两个图中的所有节点。