Cómo visualizo las redes sociales con Python


Necesito definir una red social , analizarla y dibujarla. Podrí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 interactivamente, y en unas pocas líneas le digo cómo cargar los datos, y luego llamo a una función de renderizado, que renderizará el gráfico como un SVG.

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

Author: Bhargav Rao, 2011-11-03

3 answers

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

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

import networkx as nx
G=nx.Graph()
G.add_edges_from([(1,2),(1,3),(1,4),(3,4)])
G
>>> <networkx.classes.graph.Graph object at 0x128a930>
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')
 23
Author: psychemedia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-16 23:32:04

Hay tres respuestas que mencionan Networkx y Gephi, pero nadie mencionó graph-tool. La principal diferencia es que los algoritmos se implementan en C++, dando un aumento de 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 a la pantalla). Graph-tool tiene su propio algoritmos de diseño y versátil, interactivo rutinas de dibujo basadas en cairo y GTK+, pero también puede funcionar como una interfaz muy cómoda al excelente paquete graphviz.

Aquí hay un buen ejemplo de los documentos (hay muchos, muchos más):

Partición de bloque de una red de blogs políticos

(Partición de bloque 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 usando los mismos datos (y el resultado es increíble): http://ryancompton.net/2014/10/05/graph-tools-visualization-is-pretty-good /

 11
Author: keyser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-15 10:09:21

Otra forma es Cytoscape. Puede usar con archivos gml también.

Como dijo psychemedia, puede usar Networkx para trazar su gráfico y exportarlo al 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í, usted puede cambiar el estilo también.

 1
Author: anapaulagomes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-12 15:47:28