Visualizzazione grafico con Neo4j utilizzando Neovis.js

Utilizzo degli algoritmi grafici per la visualizzazione dei dati

(William Lyon) (16 aprile 2018)

Aggiornamento: Il libro OReilly “Graph Algorithms on Apache Spark e Neo4j Book è ora disponibile come download gratuito di ebook da neo4j.com

In questo post utilizzeremo unistanza Neo4j Sandbox per iniziare con un set di dati Twitter, eseguire il PageRank e il rilevamento della comunità sui dati. Quindi mostra come incorporare una visualizzazione grafico in unapp web utilizzando Neovis.js .

In questo post esploriamo come creare visualizzazioni di dati grafici che utilizzano i risultati di algoritmi di grafici come PageRank e rilevamento della comunità . Dopo aver eseguito alcuni algoritmi di grafici utilizzando la libreria neo4j-graph-algoritmi , utilizzeremo la libreria di visualizzazione di grafici JavaScript Neovis.js per creare visualizzazioni che possono essere incorporate in unapp web, recuperando i dati direttamente da Neo4j.

Obiettivi della visualizzazione di grafici

Ci sono diverse motivazioni e strumenti per creare visualizzazioni grafiche. Ciò include strumenti per esplorare il grafico , il tipo di visualizzazioni interattive che potresti vedere in Browser Neo4j . Oppure visualizzazioni per che mostrano i risultati di alcune analisi . Questi possono essere interattivi (qualcosa da incorporare in unapp web o anche unapplicazione autonoma) o statici, intesi a trasmettere un significato specifico che potrebbe essere utilizzato nella stampa o in un post di blog.

Questo post si concentrerà su uno strumento che affronta alcuni obiettivi specifici della visualizzazione di grafici. Questo strumento è Neovis.js e viene utilizzato per creare visualizzazioni grafiche basate su JavaScript incorporate in unapp web. Utilizza il driver JavaScript Neo4j per connettersi e recuperare i dati da Neo4j e una libreria JavaScript per la visualizzazione chiamata vis .js per il rendering delle visualizzazioni dei grafici. Neovis.js può anche sfruttare i risultati di algoritmi grafici come il PageRank e il rilevamento della comunità per definire lo stile della visualizzazione associando i valori delle proprietà ai componenti visivi.

Questo screencast mostra come utilizzare la libreria Neovis.js per creare visualizzazioni di dati grafici in stile sui risultati di algoritmi grafici con i dati di Neo4j.

Visualizzazione grafico + algoritmi grafici

Ci sono tre comuni modi in cui le visualizzazioni di grafici possono essere migliorate con algoritmi di grafici. In particolare, ciò implica lo stile dei componenti visivi proporzionalmente ai risultati di questi algoritmi:

  1. Associazione della dimensione del nodo a un algoritmo di centralità , come il grado, il PageRank o la centralità tra i due. Questo ci consente di vedere a colpo docchio i nodi più importanti della rete.
  2. Raggruppamento visivo di comunità o cluster nel grafico viene eseguito mediante luso del colore, in modo da poter identificare rapidamente questi raggruppamenti distinti.
  3. Spessore della relazione di stile proporzionalmente a un spessore del bordo , nei dati dei social network questo potrebbe essere il numero di interazioni tra due caratteri, nei dati logistici e di instradamento potrebbe essere la distanza tra due centri di distribuzione ed è utile per gli algoritmi di pathfinding (come come A * o Dijkstra).

Guida introduttiva al set di dati

Useremo il sandbox russo dei troll di Twitter come set di dati. Questo set di dati contiene tweet da noti account di troll russi, come rilasciato pubblicamente da NBC News. Puoi creare la tua istanza Sandbox Neo4j qui.

Il modello di dati per il set di dati dei troll di Twitter include i Tweet , Utenti, hashtag, URL condivisi in Tweet e menzioni e retweet.

Nei dati del grafico, spesso alcune delle relazioni più interessanti sono dedotte e non modellato direttamente nei dati. Il grafico Retweet Utente-Utente ne è un esempio. Quali utenti stanno ritwittando quali altri utenti?Chi è lutente più importante in questo grafico di retweet? Ci sono gruppi di utenti che si ritwittano spesso a vicenda?

Qui abbiamo un tweet che è stato pubblicato da un utente, che un altro utente ha ritwittato. Ciò implica una relazione di retweet utente-utente. Il nostro primo passo sarà trovare quelle relazioni di retweet dedotte ed eseguire i nostri algoritmi grafici.

Per trovare gli utenti e le comunità più importanti che utilizzano questa rete di retweet, lo faremo prima trova tutti gli utenti Troll e crea una relazione RETWEETS collegando direttamente gli utenti nel grafico. Memorizziamo una proprietà count sulla relazione che rappresenta il numero di volte in cui lutente ha ritwittato laltro:

Dopo aver creato queste relazioni RETWEETS, possiamo eseguire il PageRank su questa parte del grafico (potremmo anche utilizzare una query Cypher per eseguire il PageRank sul grafico previsto senza creare esplicitamente le relazioni):

Poiché abbiamo specificato write: true sopra non solo eseguirà il PageRank, ma aggiungerà una proprietà pagerank ai nodi che contengono il loro punteggio PageRank. Possiamo quindi eseguire una query utilizzando il valore della proprietà per trovare i primi dieci account Troll in base al punteggio PageRank:

E finalmente possiamo eseguire un algoritmo di rilevamento della comunità sulla rete di retweet, in questo caso propagazione delletichetta:

Ciò aggiungerà una proprietà community ai nodi, indicando quale comunità la lalgoritmo ha determinato il nodo a cui appartiene.

Quindi ora abbiamo eseguito due algoritmi di grafi (PageRank e propagazione delletichetta), ma come possiamo dare un senso ai risultati? Una visualizzazione può aiutarci a trovare approfondimenti nei dati.

Creazione di una visualizzazione grafico con Neovis.js

Per creare una visualizzazione con Neovis.js dobbiamo prima connetterci a Neo4j. Nella scheda dei dettagli della nostra istanza Sandbox possiamo trovare i dettagli di connessione per la nostra istanza Neo4j:

La stringa di connessione al server, il nome utente e la password saranno inclusi in un oggetto di configurazione che passeremo al costruttore di Neovis. Dovremo anche specificare quali etichette di nodo vogliamo visualizzare e come dovrebbero essere stilizzate (quali proprietà determinano la dimensione e il colore del nodo).

Neovis.js funziona compilando un

con la visualizzazione, quindi dovremo specificare lid di quellelemento nelloggetto di configurazione, nonché come connetterci alla nostra istanza Neo4j e quali proprietà usare per determinare la dimensione del nodo, il colore e spessore della relazione. Ecco il codice per generare una visualizzazione grafica della nostra rete di retweet dalla nostra istanza Sandbox Neo4j, utilizzando la proprietà pagerank per determinare la dimensione del nodo, community per il colore e la count proprietà della relazione per lo spessore della relazione:

Ed ecco come appare la nostra visualizzazione:

Ci sono alcune altre opzioni di configurazione di cui puoi leggere nella documentazione del progetto.

Risorse

Download gratuito: OReilly “Graph Algorithms on Apache Spark e Neo4j”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *