Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Neo4j graph visualizing libraries

Recently I explored some libraries where I can visualize graphs from Neo4j, but didn't get a clear view wich one to choose, so I have a couple thought I'd like to share.

My requirements and wishes - after search throught REST API with cypher query visualize graphs with all relationships, nodes. And result make interactive - able to drag/drop... opportunity to reveal other nodes/rels on click. Import nodes throught json data and be able to show quickly up to at least 400 elements.

So I more or less explored further libraries:

Three.js - mostly for 3D. (If I don't need 3D then better not to choose this one)

Arbor.js - drawing leaves up to you, mostly layout library

VivaGraphJS - easy to use, but almost no documentation :(

D3.js - Looks fine, but uses SVG

Cytoscape.js - looks fine, but I read that I can't use it with Neo4j. Is D3.js the right choice for real-time visualization of Neo4j Graph DB data why?

Processing.js - have it's own language similar to Java. I'm not so much in Java-like language (yet).

And I have a couple questions:

1) Whats your experience - benefits, weakneses of libraries?

2) I suppose I want to use canvas insted of SVG? (a lot of small elements on the screen).

3) Arbor is special library for layout, but others don't have layout algorithms or what?

I'll appreciate any opinion! :-)

like image 307
Kristīne Glode Avatar asked Sep 02 '13 11:09

Kristīne Glode


1 Answers

I pondered a similar situation. I chose sigma.js.

1) Whats your experience - benefits, weakneses of libraries?

sigma.js is specific to graph rendering. d3 is a full on toolbox for visualization. Since I only want to draw graphs, the concise sigma.js interface was easier to work with. I think this is the video where the creator talks about how sigma.js is able to do incremental rendering and thus perform better and handle more vertices/edges smoothly.

2) I suppose I want to use canvas insted of SVG? (a lot of small elements on the screen).

sigma.js renders to the canvas.

Here are the sigma.js examples. The "hide nodes" example shows mouse interactions. Additionaly, here is a blog post showing how one can easily integrate neo4j w/ sigma using a very minimal amount of data massaging code written in node.js. It would be easy to port this to any server language.

like image 194
Bob B Avatar answered Sep 28 '22 03:09

Bob B