¿Cómo animar el crecimiento de una red social?

12

Estoy buscando una biblioteca / herramienta para visualizar cómo cambia la red social cuando se le agregan nuevos nodos / bordes.

Una de las soluciones existentes es SoNIA: Social Network Image Animator . Te permite hacer películas como esta .

La documentación de SoNIA dice que está rota en este momento, y además de esto, preferiría una solución basada en JavaScript. Entonces, mi pregunta es: ¿está familiarizado con alguna herramienta o puede indicarme algunas bibliotecas que hagan esta tarea lo más fácil posible?

Justo después de publicar esta pregunta, profundizaré en sigma.js , así que considere esta biblioteca cubierta.

En general, mis datos de entrada serían algo como esto:

time_elapsed; node1; node2
1; A; B
2; A; C
3; B; C

Entonces, aquí tenemos tres puntos en el tiempo (1, 2, 3), tres nodos (A, B, C) y tres bordes, que representan un cierre triádico entre los tres nodos considerados.

Además, cada nodo tendrá dos atributos (edad y género), por lo que me gustaría poder cambiar la forma / color de los nodos.

Además, después de agregar un nuevo nodo, sería perfecto tener un algoritmo ForceAtlas2 o similar para ajustar el diseño del gráfico.

Wojciech Walczak
fuente

Respuestas:

12

Las animaciones de fantasía son geniales

Me quedé muy impresionado cuando vi esta animación del repositorio git del discurso . Utilizaron Gourse, que es específicamente para git. Pero puede dar ideas sobre cómo representar la dinámica del crecimiento.

Puedes crear animaciones con matplotlib

Esta respuesta de stackoverflow parece apuntar a una solución python / networkx / matplotlib.

Pero D3.js proporciona interacción

Si está buscando una solución basada en la web, entonces d3.js es excelente. Vea esto , esto y esto por ejemplo. Vea también esta pregunta de stackoverflow , la respuesta aceptada apunta a D3.js nuevamente.

Conclusión

Me sentiría atraído por las opciones de python / networkx para el análisis de red (posiblemente para agregar atributos a su archivo de datos en bruto, por ejemplo). Entonces, para visualización y difusión, D3.js es perfecto. Puede que se sorprenda de lo fácil que puede ser escribir d3.js una vez que ingrese. ¡Creo que incluso funciona dentro de un cuaderno de ipython!

Graeme Stuart
fuente
Gracias, me gusta esta solución Python / networkx / matplotlib ya que es mi entorno de trabajo predeterminado y es fácil hacer un gif con este código. Aún así, algo que se ve mejor en la Web superaría esta solución :)
Wojciech Walczak
6

Mi primera suposición es visualizar las redes sociales en Tableau .

Y particularmente: construir gráficos de red en Tableau .

Lo que necesita es agregar dimensión de tiempo a la sección "Páginas" para poder ver las dinámicas de cambio de red.

Esta es la pantalla del enlace de arriba. ingrese la descripción de la imagen aquí

IharS
fuente
1
Hola, gracias por este consejo, pero preferiría algo que sea fácilmente publicable en la Web de forma dinámica. Además, prefiero soluciones gratuitas, mientras que Tableau, corrígeme si me equivoco, solo está disponible como versión de prueba.
Wojciech Walczak
También tiene la edición "Pública", lo que significa que debe almacenar / compartir sus resultados en la web y no puede guardarlos localmente.
IharS
2
@WojciechWalczak Quizás se pueda usar gephi en lugar de Tableau.
Amir Ali Akbari
6

Resultó que esta tarea era bastante fácil de lograr usando vis.js . Este fue el mejor código de ejemplo que he encontrado.

El ejemplo de lo que he construido sobre esto está aquí (desplácese hasta el final de esta publicación). Este gráfico representa el crecimiento de una subred de amigos de Facebook. Los puntos verdes son hembras, los azules son machos. Cuanto más oscuro es el color, más viejo es el usuario. Al hacer clic en "Dodaj węzły" puede agregar más nodos y bordes al gráfico.

De todos modos, todavía estoy interesado en otras formas de lograr esta tarea, por lo que no aceptaré ninguna respuesta por ahora.

Gracias por tus aportes!

Wojciech Walczak
fuente
sus enlaces están rotos
user1870400