2013-09-02 16 views
5

Recentemente ho esplorato alcune librerie in cui posso visualizzare grafici da Neo4j, ma non ho avuto una visione chiara da scegliere, quindi ho pensato che un paio mi piacerebbe condividere.Neo4j graph visualizza librerie

I miei requisiti e i miei desideri - dopo la ricerca attraverso l'API REST con query Cypher visualizzare grafici con tutte le relazioni, i nodi. E il risultato diventa interattivo - in grado di trascinare/rilasciare ... l'opportunità di rivelare altri nodi/rel su clic. Importa i nodi attraverso i dati JSON ed è in grado di mostrare rapidamente fino ad almeno 400 elementi.

Così ho più o meno esplorato altre librerie:

Three.js - per lo più per il 3D. (Se non ho bisogno di 3D, allora meglio non scegliere questo)

Arbor.js - disegno lascia a voi, per lo più libreria di layout di

VivaGraphJS - facile da usare, ma quasi nessuna documentazione :(

d3.js - guarda bene, ma utilizza SVG

Cytoscape.js - guarda bene, ma ho letto che non posso usarlo con Neo4j Is D3.js the right choice for real-time visualization of Neo4j Graph DB data perché

Processing.js -.? disponga di un proprio linguaggio simile a Java. Io non sono così tanto in Java-l linguaggio ike (ancora).

e ho un paio di domande:

1) Qual è il tuo esperienza - benefici, weakneses di biblioteche?

2) Suppongo di voler utilizzare canvas su SVG? (un sacco di piccoli elementi sullo schermo).

3) Arbor è una libreria speciale per il layout, ma altri non hanno algoritmi di layout o cosa?

Apprezzerò qualsiasi opinione! :-)

+2

c'è un webinar sulla visualizzazione di grafici il 5 settembre: http://info.neotechnology.com/0905-linkurious-register.html [non so se questo è conforme alle regole SO, in caso contrario, rimuovere questo commento] –

+1

Non hai specificato il tuo requisito per non utilizzare SVG in anticipo. Perché. –

+0

Per quanto mi riguarda, per il rendering di un grande grafico, è meglio scegliere la tela. (Leggi da vari forum). –

risposta

1

non vedo sigma.js in tale elenco, che si potrebbe desiderare di dare un'occhiata a come è molto utile (example)

Si dovrà gestire in qualche modo il rendering dei dati ricevuti (cioè passare da una struttura dati alla sua rappresentazione visiva) e questo dipende da cosa stai cercando di mostrare/dire con quella visualizzazione, come vuoi farlo e come vuoi che assomigli.

Come punto di partenza, vorrei andare con D3 e Sigma.

4

Ho riflettuto su una situazione simile. Ho scelto sigma.js.

1) Qual è la tua esperienza: vantaggi, punti deboli delle biblioteche?

sigma.js è specifico per il rendering grafico. d3 è un pieno di strumenti per la visualizzazione. Poiché desidero solo disegnare grafici, l'interfaccia concisa sigma.js è stata più semplice da utilizzare. Penso che questo sia the video in cui il creatore parla di come sigma.js è in grado di eseguire il rendering incrementale e quindi di eseguire meglio e gestire più vertici/bordi senza problemi.

2) Suppongo di voler utilizzare canvas su SVG?(un sacco di piccoli elementi sullo schermo).

sigma.js viene visualizzato nell'area di disegno.

Qui ci sono gli sigma.js examples. L'esempio "nascondi i nodi" mostra le interazioni del mouse. Addizionalmente, ecco un blog post che mostra come si può facilmente integrare neo4j w/sigma usando una quantità minima di codice di massaggio dei dati scritto in node.js. Sarebbe facile portarlo su qualsiasi lingua del server.

0

Ho notato che Gephi non è nella tua lista. Come visualizzatore/editor standalone, è il migliore che ho usato (hai appena ottenuto il plugin neo4j, e importa i file sorgente del database e ti permette di vederlo). È anche Open Source, quindi puoi includerlo come parte di un progetto.

+0

Ho provato Gephi ma ha un limite su bordi o nodi (forse entrambi, non ricordo) :(Finito con D3.js :) –

0

Manca anche dalla vostra lista la famiglia di librerie di visualizzazione grafica yFiles.

La variante JavaScript di if utilizza sia Canvas che SVG. Questo può dare prestazioni molto buone e visualizzazioni di alta qualità allo stesso tempo. Per i grafici a palla (migliaia di punti e linee, ma probabilmente senza testo) puoi usare Canvas e quando esegui lo zoom per dare un senso ai dati, puoi usare SVG per ottenere visualizzazioni dettagliate con etichette, icone, dati visualizzazioni inbound, ecc. È possibile utilizzare entrambe le tecniche nella stessa visualizzazione, anche allo stesso tempo, beneficiando del meglio dei due mondi (demo).

Connessione di file a Neo4j è semplice using the JavaScript Bolt driver.

Mirare a 400 elementi nella vista è una buona idea. Mentre i grafici più grandi tendono ad apparire davvero belli, la maggior parte delle volte non otterrai molte informazioni guardando le "palle di capelli". Queste visualizzazioni quasi artistiche sembrano tutte molto simili e, come tali, non portano quasi nessuna informazione. Spesso puoi anche visualizzare un'immagine statica che mostra il primo risultato di ricerca di immagini di Google per una query "grafico a palla di capelli" :-)

Per supportare meglio l'utente durante l'esplorazione, il filtro, il raggruppamento, l'annidamento e l'interazione dinamica dovrebbe essere aggiunto all'applicazione visualizzatore. In che modo questo può essere implementato, dipende molto dal dominio aziendale nella visualizzazione, anche se ci sono solo pochi approcci generici che funzionano per i grafici generici.

Disclaimer: Lavoro per la società che crea la suddetta libreria di visualizzazione. Non lo rappresento su SO, però.