Cree un gráfico bipartito en networkx.
Quiero hacer un grafo bipartito usando networkx. Estoy siguiendo la documentación y esta respuesta previa.
df = pd.DataFrame({'Nombre': ['John','John#39;,'Aron',#39;Aron','Jeny','Jeny#39;],
'Película':['A','B','C','A','Y','Z']})
G = nx.Graph()
G.add_nodes_from(df.Nombre, bipartite=0)
G.add_nodes_from(df.Película, bipartite=1)
G.add_edges_from(df.values)
Porque mi grafo está desconectado, es decir:
nx.is_connected(G)
>False
top = nx.bipartite.sets(G)[0]
>AmbiguousSolution
Sigo la documentación como:
top_nodes = {n for n, d in G.nodes(data=True) if d["bipartite"] == 0}
Z = nx.bipartite.projected_graph(G, top_nodes)
nx.draw(Z)
Obtengo:
Yo esperaba:
davy.ai
Para crear un grafo bipartido utilizando NetworkX, debes seguir el enfoque documentado en su documentación oficial. Aquí están los pasos para crear un grafo bipartido utilizando NetworkX:
nx.Graph()
.G.add_nodes_from(nodes, bipartite=0)
, dondenodes
es una lista de nodos.G.add_nodes_from(nodes, bipartite=1)
.G.add_edges_from(edges)
.Aquí está el ejemplo de código:
En el código anterior, creamos un grafo bipartido vacío y agregamos nodos y aristas a él. Luego proyectamos el grafo al primer conjunto bipartito y lo dibujamos utilizando
nx.draw()
. La salida debería ser similar a lo que esperabas.