Dire che ho due grafici NetworkX, G
e H
:Combine (join) Grafici NetworkX
G=nx.Graph()
fromnodes=[0,1,1,1,1,1,2]
tonodes=[1,2,3,4,5,6,7]
for x,y in zip(fromnodes,tonodes):
G.add_edge(x,y)
H=nx.Graph()
fromnodes=range(2,8)
tonodes=range(8,14)
for x,y in zip(fromnodes,tonodes):
H.add_edge(x,y)
Qual è il modo migliore per unire le due grafici NetworkX?
Vorrei conservare i nomi dei nodi (notare i nodi comuni, da 2 a 7). Quando ho usato nx.disjoint_union(G,H)
, questo non è accaduto:
>>> G.nodes()
[0, 1, 2, 3, 4, 5, 6, 7]
>>> H.nodes()
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
>>> Un= nx.disjoint_union(G,H)
>>> Un.nodes()
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
#
I H
etichette dei nodi sono stati cambiati (non quello che voglio). Voglio unire i grafici ai nodi con lo stesso numero.
Nota. Questo non è un duplicato di Combine two weighted graphs in NetworkX.
Cosa si vuole fare se esiste un bordo in entrambi? Dovrebbe diventare un doppio vantaggio? o solo un singolo bordo? – Joel
@Joel hmm Sono interessato a entrambi i casi. Diciamo il single edge però. – atomh33ls
Il caso single edge è gestito correttamente dal codice che hai scritto. Il caso multiedge ti basta fare 'U = nx.MultiGraph()' – Joel