es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mostrar el gráfico de red de networkx en HTML.

Estoy tratando de mostrar un gráfico que he creado utilizando networkx, pero los nodos se están superponiendo. Quiero mostrarlo en HTML para poder mover los nodos con el mouse (también agrega cierta interacción al resultado).

  • Trabajando con python3

¿Cómo puedo mostrar mi gráfico de nx en HTML?

Hasta ahora, mi código es:

G = nx.Graph ()
G.add_nodes_from (nodes) # nodes es una lista de nombres de nodos (strings)
G.add_edges_from (edges) # edges es una lista de conexiones entre nodos
pos = nx.spring_layout (G, escala = layout_scale, k = k)
plt.figure (figsize = figsize)
nx.draw_networkx (G, pos = pos)
plt.show ()

Por ahora, este código da como resultado mostrar el gráfico como una especie de imagen (en la SciView de PyCharm).

Agradecería cualquier ayuda con eso!

¡Gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para mostrar el gráfico de networkx en HTML con capacidades interactivas, puedes usar la opción renderer de nx.draw_networkx() para especificar un renderizador que genere HTML. Un renderizador como mpld3 genera código HTML y Javascript para mostrar el gráfico usando la biblioteca D3.

    Aquí hay una versión actualizada de tu código que usa mpld3 para crear un gráfico interactivo en HTML:

    import networkx as nx
    import matplotlib.pyplot as plt
    import mpld3
    
    G = nx.Graph()
    G.add_nodes_from(nodes)
    G.add_edges_from(edges)
    pos = nx.spring_layout(G, scale=layout_scale, k=k)
    fig, ax = plt.subplots(figsize=figsize)
    nx.draw_networkx(G, pos=pos, ax=ax, renderer='mpld3')
    mpld3.display(fig)
    

    Esto debería mostrar el gráfico en un formato HTML interactivo. Luego, puedes usar el ratón para mover los nodos. Nota que si todavía no has instalado mpld3, puede que necesites hacerlo a través de pip (pip install mpld3).

Comments are closed.