¿Cómo visualizo las redes sociales con Python?

Necesito definir una red social , analizarla y dibujarla. Podía dibujarlo a mano y analizarlo (calcular varias métricas) a mano. Pero no me gustaría reinventar la rueda.

He intentado usar matplotlib, pero necesito usarlo de manera interactiva, y en unas pocas líneas le digo cómo cargar los datos, y luego llamar a una función de procesamiento, que representará el gráfico como un SVG.

¿Cómo puedo visualizar las redes sociales de la manera descrita?

networkx es una biblioteca de Python muy potente y flexible para trabajar con gráficos de red. Se pueden usar conexiones dirigidas y no dirigidas para conectar nodos. Las redes se pueden construir agregando nodos y luego los bordes que los conectan, o simplemente listando pares de bordes (los nodos no definidos se crearán automáticamente). Una vez creados, los nodos (y los bordes) se pueden anotar con tags arbitrarias.

Aunque se puede usar networkx para visualizar una red (consulte la documentación), es posible que prefiera usar una aplicación de visualización de red como Gephi (disponible en gephi.org ). networkx soporta una amplia gama de formatos de importación y exportación. Si exporta una red con un formato como GraphML , el archivo exportado se puede cargar fácilmente en Gephi y visualizar allí.

import networkx as nx G=nx.Graph() G.add_edges_from([(1,2),(1,3),(1,4),(3,4)]) G >>>  G.nodes(data=True) >>> [(1, {}), (2, {}), (3, {}), (4, {})] G.node[1]['attribute']='value' G.nodes(data=True) >>> [(1, {'attribute': 'value'}), (2, {}), (3, {}), (4, {})] nx.write_graphml(G,'so.graphml') 

Hay tres respuestas que mencionan Networkx y Gephi, pero nadie mencionó la herramienta gráfica . La principal diferencia es que los algoritmos se implementan en C ++, lo que mejora el rendimiento en comparación con, por ejemplo, Networkx.

Y, también cubre la visualización. Desde el sitio:

Dibuje convenientemente sus gráficos, utilizando una variedad de algoritmos y formatos de salida (incluso en la pantalla). Graph-tool tiene sus propios algoritmos de diseño y rutinas de dibujo interactivas y versátiles basadas en el cairo y GTK +, pero también puede funcionar como una interfaz muy cómoda para el excelente paquete graphviz.

Aquí hay un buen ejemplo de la documentación (hay muchos más):

Bloquear la partición de una red de blogs políticos.

(Bloque de partición de una red de blogs políticos).

Y, el código para ello:

 >>> g = gt.collection.data["polblogs"] >>> g = gt.GraphView(g, vfilt=gt.label_largest_component(gt.GraphView(g, directed=False))) >>> state = gt.BlockState(g, B=g.num_vertices(), deg_corr=True) >>> state = gt.multilevel_minimize(state, B=2) >>> gt.graph_draw(g, pos=g.vp["pos"], vertex_fill_color=state.get_blocks(), output="polblogs_agg.pdf") <...> 

(Nota: las posiciones de cada nodo están predeterminadas en este ejemplo, por lo que no se tuvo que ejecutar ningún algoritmo de diseño)

Aquí hay otro ejemplo que usa los mismos datos (y el resultado es increíble): http://ryancompton.net/2014/10/05/graph-tools-visualization-is-pretty-good/

Otra forma es Cytoscape . Usted podría usar con archivos gml también.

Como dijo psychemedia, puede usar Networkx para trazar su gráfico y exportarlo a un archivo gml.

 nx.write_graphml(G,'my_file.gml') 

Después de eso, en Cytoscape, haga clic en Desde archivo de red y seleccione su archivo gml. Allí, puedes cambiar el estilo también.