Creazione di grafici di rete

Ciao a tutti,

Avete qualche consiglio su come creare un grafico di rete delle interazioni all’interno di un’istanza Discourse? Ad esempio, per poter valutare le dimensioni relative dei gruppi, le loro relazioni reciproche e individuare le persone “più connesse” (tramite like, ecc.), il tutto visualizzato in un grafico di rete?

Immagino che serva un servizio di terze parti come flourish, quindi se qualcuno ha esperienza nella creazione di grafici, sarebbe molto utile!

Grazie in anticipo!

Se dovessi farlo, procederei così:

  1. Scaricherei un backup del sito e lo caricerei in un database PostgreSQL; PostgreSQL è il database che supporta Discourse. (ref)

  2. Creerei un database NoSQL, in particolare Neo4j, partendo dai dati di PostgreSQL. (ref)

  3. Utilizzerei il linguaggio di query di Neo4j, Cypher, per individuare le relazioni.

Neo4j offre una sandbox; potresti trovare interessante l’esempio dei Panama Papers.


MODIFICA

Una volta che il database Neo4j è attivo e funzionante, per mantenerlo in sincronia con il database PostgreSQL di Discourse, utilizzerei uno dei seguenti metodi:

a. Trigger di PostgreSQL
b. Webhook di Discourse

Ne ho fatto uno con Flourish la settimana scorsa. Si basa su questo esempio che non funziona più perché Google ha dismesso il suo grafico a fusione di rete.

Mostra:

  • i like tra gli utenti in entrambe le direzioni
  • colori per evidenziare i gruppi
  • spessore delle linee per indicare il numero di like
  • dimensione delle bolle per mostrare il rapporto like/post per ogni utente

Il mio esempio contiene così tanti punti dati che è difficile da leggere, ma stavo solo facendo delle prove. Ridurre il numero di utenti o il periodo di tempo, ecc., lo renderebbe più chiaro.

Di seguito uno screenshot di un utente selezionato:

Ho creato questo come una visualizzazione online: Community Network Visualisation