https://github.com/frewsxcv/graphosaurus
And a really crappy demo (give it a few seconds to load):
Here's an overview of the options for the layered digraph layout: http://www.gojs.net/latest/samples/ldLayout.html
The tree layout supports some fairly complicated tree structures, including ones that alternate or have different configurations for leaves: http://www.gojs.net/latest/samples/tLayout.html
Disclosure: I'm a developer of this library and it is not free.
http://www.tensegrity-software.com/category/javascript-html5...
In general, D3 looks to be a more general purpose graphing tool (also maps, multiple charting types, and graphs), while this is more single purpose.
a quick f12-for-firebug reveals that sigma indeed uses the canvas element. i haven't actually used the library, but it appears ( https://github.com/jacomyal/sigma.js/blob/master/package.jso... ) to in fact be built directly on canvas, which is impressive in some sense but probably does duplicate a lot of work that could be avoided by using a generic-canvas-drawing-but-not-specifically-graph-drawing library.
d3 stands for "data-driven-documents" and is actually not specific to graphs. at the core, it's about (as the expanded name suggests) connecting html documents to javascript data structures. of course, lots of libraries -- angular, etc. -- may be described in such general terms, so more specifically, d3 is useful when you have both a lot of data (or a lot of structure to your data) and a lot of html elements to layout according to that data.
it just so happens that <svg> is now actually a tag in html ( : / ? i mean that, the advances in the browsers themselves, was news to me, when i looked at d3 for the first time), so yeah, d3 is most commonly used when the elements you want to lay out are a bunch of svg tags.
anyway, i really like d3 (and probably would like three.js, for that matter, if i took the time to toy around with it) b/c i think it does one fairly general thing, does it well, and has practical applications.
Advantage of d3.js is that it is easier to customize the display you want.
other difference: sigma.js implements "force atlas 2 " algorithm - like the one found in Gephi, which may be more suitable for some graphs (when you want to highlight community structures)
The main difference is that sigma only deals with graphs drawing, so it deals without effort with drag and drop (mouse or touch), scaling the graph to the screen, smooth zooming (with mousewheel or pinch)...
First: looks really good, very easy to integrate.
Next: Am I missing it, or is there no way to visually represent the edge strength? Everything appears to be a 1px connection no matter how strong the edge.
After that, check how sigma rescales the nodes and edges in the related wiki page:
https://github.com/jacomyal/sigma.js/wiki/Settings#wiki-resc...