Diagrammvisualisierung mit Neo4j unter Verwendung von Neovis.js

Verwenden von Diagrammalgorithmen für die Datenvisualisierung

(William Lyon) (16. April 2018)

Update: Das OReilly-Buch „Graph Algorithms on Apache Spark and Neo4j Book“ ist jetzt als kostenloser eBook-Download von neo4j.com

In diesem Beitrag verwenden wir eine Neo4j Sandbox -Instanz, um mit einem Twitter-Dataset zu beginnen, den PageRank und die Community-Erkennung für die Daten auszuführen. Zeigen Sie anschließend, wie Sie eine Diagrammvisualisierung mit Neovis.js in eine Web-App einbetten.

In diesem Beitrag erfahren Sie, wie Sie Grafikdatenvisualisierungen erstellen, die die Ergebnisse von Diagrammalgorithmen wie PageRank und Community-Erkennung . Nachdem einige Diagrammalgorithmen mit der Bibliothek neo4j-graph-algorithm ausgeführt wurden, verwenden wir die JavaScript-Grafikvisualisierungsbibliothek Neovis.js zum Erstellen von Visualisierungen, die in eine Web-App eingebettet werden können, und Abrufen von Daten direkt aus Neo4j.

Ziele der Grafikvisualisierung

Es gibt verschiedene Motivationen und Werkzeuge zum Erstellen von Diagrammvisualisierungen. Dies umfasst Tools zum Erkunden des Diagramms – die Art interaktiver Visualisierungen, die Sie möglicherweise in Neo4j Browser . Oder Visualisierungen für , die die Ergebnisse einiger Analysen zeigen . Diese können interaktiv sein (etwas, das in eine Web-App oder sogar eine eigenständige Anwendung eingebettet werden soll) oder statisch, , um eine bestimmte Bedeutung zu vermitteln , das möglicherweise in gedruckter Form oder in einem Blog-Beitrag verwendet wird.

Dieser Beitrag konzentriert sich auf ein Tool, das bestimmte Ziele der Diagrammvisualisierung behandelt. Dieses Tool ist Neovis.js und wird zum Erstellen von JavaScript-basierten Diagrammvisualisierungen verwendet, die in eine Web-App eingebettet sind. Es verwendet den JavaScript Neo4j-Treiber , um eine Verbindung zu Neo4j herzustellen und Daten von diesem abzurufen, sowie eine JavaScript-Bibliothek zur Visualisierung mit dem Namen vis .js zum Rendern von Diagrammvisualisierungen. Neovis.js kann auch die Ergebnisse von Diagrammalgorithmen wie PageRank und Community-Erkennung für die Gestaltung der Visualisierung nutzen, indem Eigenschaftswerte an visuelle Komponenten gebunden werden.

Dieser Screencast zeigt Verwendung der Bibliothek Neovis.js zum Erstellen von Visualisierungen von Diagrammdaten, die auf die Ergebnisse von Diagrammalgorithmen mit Daten aus Neo4j abgestimmt sind.

Graphvisualisierung + Graphalgorithmen

Es gibt drei gemeinsame Möglichkeiten, wie Diagrammvisualisierungen mit Diagrammalgorithmen verbessert werden können. Insbesondere umfasst dies das Styling visueller Komponenten proportional zu den Ergebnissen dieser Algorithmen:

  1. Binden der Knotengröße an einen Zentralitätsalgorithmus , z. B. Grad, PageRank oder Zentralität zwischen zwei Zuständen. Auf diese Weise können wir auf einen Blick die wichtigsten Knoten im Netzwerk erkennen.
  2. Visuelle Gruppierung von Communities oder Clustern im Diagramm wird durch die Verwendung von Farbe ausgeführt, damit wir diese unterschiedlichen Gruppierungen schnell identifizieren können.
  3. Dicke der Styling-Beziehung proportional zu einem Kantengewicht In Daten sozialer Netzwerke kann dies die Anzahl der Interaktionen zwischen zwei Zeichen sein. In Logistik- und Routingdaten kann dies die Entfernung zwischen zwei Verteilungszentren sein und ist nützlich für Pfadfindungsalgorithmen (z als A * oder Dijkstra).

Erste Schritte mit dem Datensatz

Wir werden die Sandbox der russischen Twitter-Trolle als unseren Datensatz verwenden. Dieser Datensatz enthält Tweets von bekannten russischen Troll-Konten, die öffentlich von NBC News veröffentlicht wurden. Sie können Ihre eigene Neo4j Sandbox-Instanz hier.

Das Datenmodell für den Twitter Trolls-Datensatz enthält Tweets , Benutzer, Hashtags, URLs, die in Tweets und Erwähnungen und Retweets geteilt werden.

In Diagrammdaten werden häufig einige der interessantesten Beziehungen abgeleitet und nicht direkt in den Daten modelliert. Das User-User-Retweet-Diagramm ist ein Beispiel dafür. Welche Benutzer twittern welche anderen Benutzer?Wer ist der wichtigste Benutzer in diesem Retweet-Diagramm? Gibt es Benutzergruppen, die sich häufig gegenseitig twittern?

Hier haben wir einen Tweet gepostet von einem Benutzer, den ein anderer Benutzer retweetet hat. Dies impliziert eine Benutzer-Benutzer-Retweets-Beziehung. Unser erster Schritt wird darin bestehen, diese abgeleiteten Retweets-Beziehungen zu finden und unsere Graph-Algorithmen auszuführen.

Um die wichtigsten Benutzer und Communitys zu finden, die dieses Retweet-Netzwerk verwenden, werden wir Finden Sie zuerst alle Troll-Benutzer und erstellen Sie eine RETWEETS -Beziehung, die die Benutzer im Diagramm direkt verbindet. Wir speichern eine count -Eigenschaft in der Beziehung, die angibt, wie oft der Benutzer den anderen retweetet hat:

Nachdem wir diese RETWEETS -Beziehungen erstellt haben, können wir den PageRank über diesen Teil des Diagramms ausführen (wir können auch eine Cypher-Abfrage verwenden So führen Sie den PageRank über das projizierte Diagramm aus, ohne die Beziehungen explizit zu erstellen):

Da wir write: true darüber wird nicht nur PageRank ausgeführt, sondern den Knoten wird auch eine pagerank -Eigenschaft hinzugefügt, die ihre PageRank-Bewertung enthält. Mit diesem Eigenschaftswert können wir dann die zehn besten Troll-Konten nach PageRank-Punktzahl abfragen:

Und schließlich können wir einen Community-Erkennungsalgorithmus im Retweet-Netzwerk ausführen, in diesem Fall Label-Propagation:

Dadurch wird den Knoten eine community -Eigenschaft hinzugefügt, die angibt, welche Community die Der Algorithmus hat festgestellt, zu welchem ​​Knoten er gehört.

Wir haben jetzt zwei Diagrammalgorithmen (PageRank und Label Propagation) ausgeführt. Aber wie verstehen wir die Ergebnisse? Eine Visualisierung kann uns helfen, Einblicke in die Daten zu finden.

Erstellen einer Diagrammvisualisierung mit Neovis.js

Um eine Visualisierung mit Neovis.js zu erstellen, müssen wir zuerst eine Verbindung zu Neo4j herstellen. Auf der Registerkarte „Details“ unserer Sandbox-Instanz finden Sie die Verbindungsdetails für unsere Neo4j-Instanz:

Die Serververbindungszeichenfolge, der Benutzername und das Kennwort werden in ein Konfigurationsobjekt aufgenommen, das wir an den Konstruktor für Neovis übergeben. Wir müssen auch angeben, welche Knotenbeschriftungen wir visualisieren möchten und wie sie gestaltet werden sollen (welche Eigenschaften die Knotengröße und -farbe bestimmen).

Neovis.js füllt eine

-Element mit der Visualisierung, daher müssen wir die ID dieses Elements im Konfigurationsobjekt angeben sowie angeben, wie eine Verbindung zu unserer Neo4j-Instanz hergestellt werden soll und welche Eigenschaften zur Bestimmung der Knotengröße und -farbe verwendet werden sollen und Beziehungsdicke. Hier ist der Code zum Generieren einer Diagrammvisualisierung unseres Retweet-Netzwerks aus unserer Neo4j Sandbox-Instanz unter Verwendung der Eigenschaft pagerank zum Bestimmen der Knotengröße community für Farbe und die Beziehungseigenschaft count für die Beziehungsdicke:

Und so sieht unsere Visualisierung aus:

In der Projektdokumentation finden Sie einige weitere Konfigurationsoptionen.

Ressourcen

Kostenloser Download: OReilly „Graph-Algorithmen für Apache Spark und Neo4j“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.