2013-09-02 12 views
5

Vor kurzem habe ich einige Bibliotheken erkundet, wo ich Graphen von Neo4j visualisieren kann, aber keine klare Sicht hatte, welche man wählen sollte, also habe ich ein paar Gedanken, die ich teilen möchte.Neo4j Graph Visualisierung von Bibliotheken

Meine Anforderungen und Wünsche - nach der Suche durch REST-API mit Chiffre Abfrage visualisieren Grafiken mit allen Beziehungen, Knoten. Und Ergebnis machen interaktiv - in der Lage Drag/Drop ... Gelegenheit, andere Knoten/rels beim Klicken zu zeigen. Importieren Sie Knoten über JSON-Daten und können Sie schnell bis zu mindestens 400 Elemente anzeigen.

Also habe ich mehr oder weniger erforschten weitere Bibliotheken:

Three.js - vor allem für 3D. (Wenn ich brauche 3D nicht dann besser nicht, diese zu wählen)

Arbor.js - Zeichnung Sie verlässt nach oben, vor allem das Layout Bibliothek

VivaGraphJS - einfach zu bedienen, aber so gut wie keine Dokumentation :(

D3.js - sieht gut aus, sondern nutzt SVG

Cytoscape.js - sieht gut aus, aber ich lese, dass ich es nicht mit Neo4j können Is D3.js the right choice for real-time visualization of Neo4j Graph DB data warum

Processing.js.? - haben es eigene Sprache ähnlich wie Java Ich bin nicht so sehr in Java-l Ike Sprache (noch).

Und ich habe ein paar Fragen:

1) Was ist Ihre Erfahrung - Vorteile, weakneses von Bibliotheken?

2) Ich nehme an, ich möchte Leinwand anstelle von SVG verwenden? (viele kleine Elemente auf dem Bildschirm).

3) Arbor ist spezielle Bibliothek für Layout, aber andere haben keine Layout-Algorithmen oder was?

Ich werde jede Meinung zu schätzen wissen! :-)

+2

gibt es ein Webinar über Graphvisualisierung am 5. September: http://info.neotechnology.com/0905-linkurious-register.html [nicht sicher, ob dies zu SO Regeln konform ist, wenn nicht bitte diesen Kommentar entfernen] –

+1

Sie haben Ihre Anforderung, SVG nicht im Voraus zu verwenden, nicht angegeben. Warum das. –

+0

Soweit es mich betrifft, ist für große Graph Rendering, Leinwand besser zu wählen. (Lesen Sie aus verschiedenen Foren). –

Antwort

1

Ich sehe nicht sigma.js in dieser Liste, die Sie auf einen Blick nehmen möchten, da es sehr nützlich ist (example)

Sie müssen irgendwie die Wiedergabe der empfangenen Daten verarbeiten (dh von einer Datenstruktur zu ihrer visuellen Darstellung) und das hängt davon ab, was Sie mit dieser Visualisierung zeigen/sagen wollen, wie Sie es machen wollen und wie Sie es aussehen lassen wollen.

Als Ausgangspunkt würde ich mit D3 und Sigma gehen.

4

Ich dachte über eine ähnliche Situation nach. Ich habe mich für sigma.js entschieden.

1) Was ist Ihre Erfahrung - Vorteile, weakneses von Bibliotheken?

sigma.js ist spezifisch für Graph Rendering. d3 ist eine vollständige Toolbox zur Visualisierung. Da ich nur Graphen zeichnen möchte, war die prägnante Oberfläche von sigma.js einfacher zu handhaben. Ich denke, das ist the video, wo der Ersteller darüber spricht, wie sigma.js inkrementelles Rendering durchführen kann und somit besser funktioniert und mehr Ecken/Kanten gleichmäßig behandelt.

2) Ich nehme an, ich möchte Leinwand anstelle von SVG verwenden?(viele kleine Elemente auf dem Bildschirm).

sigma.js wird auf der Zeichenfläche gerendert.

Hier sind die sigma.js examples. Das Beispiel "Knoten ausblenden" zeigt Mausinteraktionen. Zusätzlich gibt es hier eine blog post, die zeigt, wie man neo4j w/sigma einfach integrieren kann, indem man eine sehr geringe Menge an in node.js geschriebenem Daten-Massier-Code verwendet. Es wäre einfach, dies in eine beliebige Serversprache zu portieren.

0

Ich bemerke, dass Gephi nicht auf Ihrer Liste ist. Als Standalone-Visualisierer/-Editor ist es das Beste, das ich verwendet habe (Sie erhalten nur das Neo4j-Plugin, und es wird die Quelldateien der Datenbank importieren und Ihnen anzeigen lassen). Es ist auch Open Source, also können Sie es als Teil eines Projekts hinzufügen.

+0

Ich habe versucht, Gephi, aber es hat eine Grenze für Kanten oder Knoten (vielleicht beide, erinnere mich nicht) :(Beendet mit D3.js :) –

0

Ebenfalls fehlt auf Ihrer Liste die yFiles Familie von Graph Visualisierungsbibliotheken.

Die JavaScript-Variante von if verwendet sowohl Canvas als auch SVG. Dies kann sehr gute Leistung und hochwertige Visualisierungen zur gleichen Zeit geben. Für haarähnliche Graphen (Tausende von Punkten und Linien, aber wahrscheinlich keinen Text) können Sie Canvas verwenden und wenn Sie die Daten vergrößern, können Sie SVG verwenden, um detaillierte Visualisierungen mit Beschriftungen, Symbolen und Daten zu erhalten - Verbundene Visualisierungen, etc. Sie können beide Techniken in derselben Visualisierung verwenden und gleichzeitig vom Besten beider Welten profitieren (demo).

Das Verbinden von yFiles mit Neo4j ist einfach using the JavaScript Bolt driver.

Das Ziel 400 Elemente in der Ansicht ist eine gute Idee. Während größere Graphen dazu tendieren, wirklich nett zu sein, werden Sie die meiste Zeit nicht viele Einsichten gewinnen, wenn Sie sich "Haarbälle" anschauen. Diese fast künstlerischen Visualisierungen sehen alle sehr ähnlich aus und tragen daher kaum Informationen. Oft kann man genausogut ein statisches Bild angezeigt werden das erste Google-Bildsuche Treffer für „Hairball Graph“ Abfrage :-)

Um während der Exploration unterstützen den Anwender besser zu zeigen, Filterung, Gruppierung, nisten, und dynamische Interaktion sollte der Viewer-Anwendung hinzugefügt werden. Wie dies implementiert werden kann, hängt jedoch stark von der Geschäftsdomäne in der Visualisierung ab, und es gibt nur sehr wenige generische Ansätze, die für generische Graphen funktionieren.

Haftungsausschluss: Ich arbeite für das Unternehmen, das die oben genannte Visualisierungsbibliothek erstellt. Ich vertrete es jedoch nicht auf SO.