17

Sono uno studente di CS Research in UW e il mio gruppo è al punto di provare a visualizzare il traffico di rete specifico inserito in un grafico neo4j DB in tempo reale.D3.js è la scelta giusta per la visualizzazione in tempo reale dei dati DB Neo4j Graph

Ho letto di molti strumenti diversi come gephi, cytoscape, risciò (basato su D3.js), altri e D3.js.

Siamo così avanti con D3.js, ma volevamo ottenere l'opinione della comunità. Non possiamo usare cytoscape a causa di neo4j, e sentiamo che D3.js funzionerebbe al meglio con dati semi-grandi in un ambiente in tempo reale veloce.

Suggerimenti?

Forse per un'altra domanda, ma anche sentirsi liberi di inserire: Il miglior modo per implementare neo4j? Java, Ruby, node.js?

Grazie!

risposta

9

La mia comprensione: Gephi non funziona bene con gli aggiornamenti in tempo reale; di solito è usato su dati statici.

Una considerazione importante: qual è la visualizzazione che desideri presentare? È un grafico diretto? Ciclico? Ponderata? Etichette aggiuntive?

Alcuni toolkit sono "fissi" in ciò che possono visualizzare, ma facilitano la presentazione di un grafico. Altri (come d3) sono molto estensibili, quindi puoi creare praticamente qualsiasi cosa.

Ai fini del formato StackOverflow, si potrebbe ottenere risposte migliori se è possibile definire i limiti e le esigenze del vostro sistema (tasso effettivo dei dati, thin/thick client, il tipo di viz, ecc)

+0

I dati sarebbero il traffico di rete, in particolare il traffico TCP per cominciare. Vogliamo provare entrambe le serie temporali (Rickshaw presta bene a questo, credo) e grafici diretti. Grazie per la tua risposta, soprattutto con il tuo commento su Gephi. – jhanna0188

+0

Puoi suggerire qualcosa, che può visualizzare un grafico ciclico diretto in 3d con webgl? : D – inf3rno

7

Penso che la D3 sia fantastica, tuttavia, di recente, c'è stato un discorso su Sigma.js al FOSDEM, spiegando che è più adatto per i grafici più grandi. Vedi anche http://thewhyaxis.info/hairball/

+0

Sì, mi sento davvero si tratta di Sigma.js vs d3.js in questo caso. Che di per sé è una situazione di Canvas vs SVG. Ho letto molto su entrambi ora e sono davvero propenso a D3 con l'implementazione di JRuby Neo4j. Grazie per la vostra risposta! – jhanna0188

+1

@ jhanna0188 Com'è stata la tua esperienza con D3 con JRuby/Neo4j? Alla fine, hai tentato qualcosa con SigmaJS? – emecas

8

controllo out vivagraph che usa webgl per il rendering e scala molto bene anche per reti più grandi. Hanno alcuni buoni esempi per quelli davvero grandi (FB, Amazon).

http://github.com/anvaka/VivaGraphJS

+0

fatto alcuni benchmark e VivaGraphJS esegue meglio di nGraph (il suo successore) – pcamelo

12

Non c'è una soluzione pallottola d'argento per questo tipo di problema e la maggior parte dipende da quello che avete in mente di fare, la squadra e il bilancio (di tempo e denaro) che avete.

io non consiglierei di D3, a meno che non si deve soddisfatta una delle seguenti opzioni:

  • si desidera creare un nuovo modo per visualizzare i dati
  • ci sono persone qualificate nella vostra squadra - che può essere voi - con D3
  • avete già altri widget D3/cioè di integrare

Se non ha incontrato una delle voci sopra avrei messo D3 da un lato, e ti dirà di dai un'occhiata a:

  • SigmaJS, Open Source e libreria Javascript gratuita.
  • KeyLines, commerciale Javascript Toolkit.
  • VivaGraphJS, Open Source e la biblioteca libera JS.

Disclaimer: Sono uno degli sviluppatori KeyLines.

A seconda della dimensione dei dati, la scelta della libreria può cambiare: se si prevede di non avere più di 3/400 nodi sul grafico e non si richiedono particolari stili/animazioni, allora SigmaJS penso sia più che bene; Se stai cercando qualcosa di più avanzato per lo styling o l'animazione, ti consiglio KeyLines, perché è progettato per gestire questo tipo di situazioni (fornendo un layout incrementale) e scala fino a 2000 nodi senza problemi - sebbene io possa suggerire avere un filtro su un lato con queste dimensioni.

vorrei nominare VivaGraph come ultima risorsa: SigmaJS ha un renderer WebGL come bene e fornire un IMHO rendendo molto più bello.
VivaGraphJS saranno presto sostituiti con ngraph che utilizzerà un aproach agnostica per rendering: è possibile utilizzare PIXI, tessuto o quello che volete ....

Utilizzando un renderer WebGL ha senso quando si carica una volta il vostro patrimonio e il riutilizzo per tutto il tempo: se stai disegnando gli elementi del tuo grafico in uno scenario in tempo reale, non c'è alcun vantaggio su Canvas IMHO.

Problemi correlati