Come animare la crescita di un social network?


12

Sto cercando una libreria / strumento per visualizzare come i social network cambiano quando vengono aggiunti nuovi nodi / bordi.

Una delle soluzioni esistenti è SoNIA: Social Network Image Animator . Ti permette di fare film come questo .

La documentazione di SoNIA dice che al momento è rotta, e oltre a ciò preferirei una soluzione basata su JavaScript. Quindi, la mia domanda è: hai familiarità con qualche strumento o sei in grado di indicarmi alcune librerie che renderebbero questo compito il più semplice possibile?

Subito dopo aver pubblicato questa domanda , esaminerò sigma.js , quindi ti preghiamo di considerare questa libreria.

In generale, i miei dati di input sarebbero qualcosa del genere:

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

Quindi, qui abbiamo tre punti nel tempo (1, 2, 3), tre nodi (A, B, C) e tre bordi, che rappresentano una chiusura triadica tra i tre nodi considerati.

Inoltre, ogni nodo avrà due attributi (età e sesso), quindi vorrei poter cambiare la forma / il colore dei nodi.

Inoltre, dopo aver aggiunto un nuovo nodo, sarebbe perfetto avere un ForceAtlas2 o un algoritmo simile per regolare il layout del grafico.

Risposte:


12

Le animazioni di fantasia sono fantastiche

Sono rimasto molto colpito quando ho visto questa animazione del repository git del discorso . Hanno usato Gourse che è specificamente per Git. Ma può dare idee su come rappresentare la dinamica della crescita.

Puoi creare animazioni con matplotlib

Questa risposta StackOverflow sembra puntare a una soluzione python / networkx / matplotlib.

Ma D3.js fornisce interazione

Se stai cercando una soluzione basata sul web, allora d3.js è eccellente. Vedi questo , questo e questo per esempio. Vedi anche questa domanda stackoverflow, la risposta accettata punta di nuovo a D3.js.

Conclusione

Sarei attratto dalle opzioni python / networkx per l'analisi della rete (possibilmente per aggiungere attributi al tuo file di dati non elaborati, ad esempio). Quindi, per la visualizzazione e la diffusione, D3.js è perfetto. Potresti essere sorpreso di quanto sia facile scrivere d3.js una volta entrato. Credo che funzioni anche con un notebook ipython!


Grazie, mi piace questa soluzione Python / networkx / matplotlib poiché è il mio ambiente di lavoro predefinito, ed è facile ricavare un GIF da questo codice. Tuttavia, qualcosa che sembra più bello sul Web potrebbe battere questa soluzione :)
Wojciech Walczak,

6

La mia prima ipotesi è di visualizzare i social network in Tableau .

E in particolare: creazione di grafici di rete in Tableau .

Ciò di cui hai bisogno è aggiungere la dimensione temporale alla sezione "Pagine" per poter vedere la dinamica delle modifiche alla rete.

Questa è la schermata dal link sopra. inserisci qui la descrizione dell'immagine


1
Ciao, grazie per questo suggerimento, ma preferirei qualcosa che è facilmente pubblicabile sul Web in una forma dinamica. Inoltre, preferisco soluzioni gratuite, mentre Tableau - correggimi se sbaglio - è disponibile solo come versione di prova.
Wojciech Walczak,

Ha anche un'edizione "pubblica", il che significa che devi archiviare / condividere i tuoi risultati sul web e non puoi salvarli localmente.
IharS,

2
@WojciechWalczak Forse gephi può essere usato al posto di Tableau.
Amir Ali Akbari,

6

Si è scoperto che questo compito era abbastanza facile da realizzare utilizzando vis.js . Questo è stato il miglior codice di esempio che ho trovato.

L'esempio di ciò che ho costruito su questo è qui (scorrere fino alla fine di questo post). Questo grafico rappresenta la crescita di una sottorete di amici di Facebook. I punti verdi sono femmine, quelli blu sono maschi. Più scuro è il colore, più vecchio è l'utente. Facendo clic su "Dodaj węzły" è possibile aggiungere più nodi e bordi al grafico.

Ad ogni modo, sono ancora interessato ad altri modi per svolgere questo compito, quindi non accetterò nessuna risposta per ora.

Grazie per il tuo contributo!


i tuoi collegamenti sono interrotti
user1870400
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.