Vizualizarea graficului cu Neo4j Utilizarea Neovis.js

Utilizarea algoritmilor graficului pentru vizualizarea datelor

(William Lyon) (16 aprilie 2018)

Actualizare: Cartea OReilly „Graph Algorithms on Apache Spark and Neo4j Book este acum disponibilă ca descărcare gratuită de cărți electronice, de pe neo4j.com

În această postare vom folosi o instanță Neo4j Sandbox pentru a începe cu un set de date Twitter, pentru a rula PageRank și detectarea comunității pe date. Apoi arătați cum să încorporați o vizualizare grafică într-o aplicație web utilizând Neovis.js .

În această postare explorăm cum să creăm vizualizări de date grafice care utilizează rezultatele algoritmilor graficului, cum ar fi PageRank și detectarea comunității . După rularea unor algoritmi grafic utilizând biblioteca neo4j-graph-algorithms vom folosi biblioteca de vizualizare a graficelor JavaScript Neovis.js pentru a crea vizualizări care pot fi încorporate într-o aplicație web, preluând date direct din Neo4j.

Obiective de vizualizare a graficelor

Există diferite motivații și instrumente pentru crearea vizualizărilor grafice. Aceasta include instrumente pentru explorarea graficului – tipul de vizualizări interactive pe care le-ați putea vedea în Neo4j Browser . Sau vizualizări pentru care arată rezultatele unor analize . Acestea pot fi interactive (ceva ce trebuie încorporat într-o aplicație web sau chiar într-o aplicație independentă) sau statice, menite să transmită un sens specific care ar putea fi utilizată în tipărire sau într-o postare pe blog.

Această postare se va concentra pe un instrument care se adresează unor obiective specifice vizualizării graficelor. Acest instrument este Neovis.js și este utilizat pentru crearea de vizualizări grafice bazate pe JavaScript care sunt încorporate într-o aplicație web. Folosește driverul Neo4j JavaScript pentru a se conecta și prelua date de la Neo4j și o bibliotecă JavaScript pentru vizualizare numită vis .js pentru redarea vizualizărilor grafice. Neovis.js poate utiliza, de asemenea, rezultatele algoritmilor graficului, cum ar fi PageRank și detectarea comunității, pentru stilizarea vizualizării prin legarea valorilor proprietăților de componentele vizuale.

cum se folosește biblioteca Neovis.js pentru a crea vizualizări de date grafice în funcție de rezultatele algoritmilor graficului cu date de la Neo4j.

Vizualizarea graficului + Algoritmii graficului

Există trei elemente comune modalități prin care vizualizările grafice pot fi îmbunătățite cu algoritmi grafici. În mod specific, aceasta implică stilizarea componentelor vizuale proporțional cu rezultatele acestor algoritmi:

  1. Legarea dimensiunii nodului la un algoritm de centralitate , cum ar fi gradul, PageRank sau centralitatea între dimensiuni. Acest lucru ne permite să vedem dintr-o privire cele mai importante noduri din rețea.
  2. Gruparea vizuală comunități sau clustere în grafic se realizează prin utilizarea culorii, astfel încât să putem identifica rapid aceste grupări distincte.
  3. Grosimea relației de stil proporțional cu o greutate a marginii , în datele rețelelor sociale, acesta ar putea fi numărul de interacțiuni între două caractere, în datele logistice și de rutare ar putea fi distanța dintre două centre de distribuție și este util pentru algoritmi de căutare a căilor (cum ar fi ca A * sau a lui Dijkstra).

Noțiuni introductive despre setul de date

Vom folosi sandbox-ul rusesc Twitter Trolls ca set de date al nostru. Acest set de date conține tweet-uri din conturile Troll rusești cunoscute, publicate public de NBC News. Puteți crea propria instanță Neo4j Sandbox aici.

Modelul de date pentru setul de date Twitter Trolls include Tweets , Utilizatori, Hashtag-uri, adrese URL partajate în Tweets și mențiuni și retweets.

În datele grafice, adesea unele dintre cele mai interesante relații sunt deduse , și nu sunt modelate direct în date. Graficul retweet utilizator-utilizator este un exemplu în acest sens. Ce utilizatori redistribuie pe ce alți utilizatori?Cine este cel mai important utilizator din acest grafic de retweet? Există grupuri de utilizatori care își redistribuie frecvent reciproc?

Aici avem un tweet care a fost postat de către un utilizator, pe care alt utilizator l-a retweetat. Aceasta implică o relație de retweets utilizator-utilizator. Primul nostru pas va fi să găsim acele relații de retweets deduse și să rulăm algoritmii grafici.

Pentru a găsi cei mai importanți utilizatori și comunități care utilizează această rețea de retweet vom întâi găsiți toți utilizatorii Troll și creați o relație RETWEETS conectând direct utilizatorii din grafic. Stocăm o proprietate count pe relația reprezentând de câte ori utilizatorul a retweeted cealaltă:

Odată ce am creat aceste RETWEETS putem rula PageRank peste această parte a graficului (am putea folosi și o interogare Cypher pentru a rula PageRank peste graficul proiectat fără a crea explicit relațiile):

Deoarece specificăm write: true de mai sus nu numai că va rula PageRank, dar va adăuga o proprietate pagerank la noduri conține scorul lor PageRank. Putem apoi interoga folosind acea valoare a proprietății pentru a găsi primele zece conturi Troll după scorul PageRank:

Și în cele din urmă putem rula un algoritm de detectare a comunității în rețeaua de retweet, în acest caz propagarea etichetei:

Aceasta va adăuga o proprietate community nodurilor, indicând ce comunitate algoritmul a determinat căreia îi aparține nodul.

Așa că am rulat acum doi algoritmi grafici (PageRank și propagarea etichetelor), dar cum ne dăm sens rezultatelor? O vizualizare ne poate ajuta să găsim informații despre date.

Crearea unei vizualizări grafice cu Neovis.js

Pentru a crea o vizualizare cu Neovis.js, trebuie mai întâi să ne conectăm la Neo4j. În fila de detalii a instanței Sandbox putem găsi detaliile conexiunii pentru instanța Neo4j:

Șirul de conexiune la server, numele de utilizator și parola vor fi incluse într-un obiect de configurare pe care îl vom transmite constructorului pentru Neovis. De asemenea, va trebui să specificăm ce etichete de nod dorim să vizualizăm și cum ar trebui să fie stilizate (ce proprietăți determină dimensiunea și culoarea nodului).

Neovis.js funcționează completând un

element cu vizualizarea, deci va trebui să specificăm id-ul acelui element în obiectul de configurare, precum și cum să ne conectăm la instanța Neo4j și ce proprietăți să folosim pentru determinarea dimensiunii nodului, a culorii , și grosimea relației. Iată codul pentru a genera o vizualizare grafică a rețelei noastre de retweet din instanța Neo4j Sandbox, utilizând proprietatea pagerank pentru a determina dimensiunea nodului, community pentru culoare și proprietatea relației count pentru grosimea relației:

Și iată cum arată vizualizarea noastră:

Există câteva alte opțiuni de configurare despre care puteți citi în documentația proiectului .

Resurse

Descărcare gratuită: OReilly „Graph Algorithms on Apache Spark and Neo4j”

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *