WebGraphviz: Graphviz in the Browser
webgraphviz.com
webgraphviz.com
For people who don't know Viz.js, it is basically GraphViz compiled for the web as ASM.js using emscripten plus a convenient way to call it. Usage is simple: you give the DOT code, and it returns an SVG document as string (other formats are actually supported).
Viz.js is awesome. Thanks Mike Daines! And obviously, thanks Graphviz!
Webgraphiz uses a viz.js file. Is it actually the same Viz.js? (edit: yes, it is)
d3-graphviz is based on the Viz.js port of Graphviz and does animated transitions between graphs. See e.g. this demo: https://bl.ocks.org/magjac/4acffdb3afbc4f71b448a210b5060bca
Since d3-graphviz is based on Viz.js it can can do everything that Viz.js can do. Also, it adds the following features:
Animated transition of one graph into another
Edge path tweening
Node shape tweening
Fade-in and fade-out of entering and exiting nodes and edges
Animated growth of entering edges
Panning & zooming of the generated graph
Extensive docs at: https://github.com/magjac/d3-graphvizAny feedback is welcome.
I wouldn't mind changing it to use a js renderer, currently it's using the (deprecated!) Google image api but I hadn't really found anything as complete/safe/reliable to replace it
EDIT: or rather, what was needed for such a port a few years ago; I think it's been made much simpler since then!
http://viz-js.com/ - Almost live updating. Quite fast, looks good, has lots of flexibility in output format.
http://www.webgraphviz.com/ - If you don't want any chance of data going to an external server, this can be saved locally and works fine.
[1]: https://www.sharelatex.com/blog/2013/05/28/How-to-draw-Vecto...
There's no way, right? Was JS even this functional back in 93?
Hmm, I wonder what the cite at the bottom means then:
Object Oriented Graphs
Stephen North, 3/19/93
Searching Stephen North brings up a very interesting Google Scholar page full of citations about graphs and dot: https://scholar.google.com/citations?user=_QJP9-0AAAAJ&hl=en
Neato. (Ha. Cue yakety-yak music.)
Holy moly! Attention HN, we have a delightful mystery on our hands! Sound the alarm: http://www.webgraphviz.com/viz.js
So who cares? Well, it's clojure-compiled for one, so all the variables are all Yu Ugy Jagugnug (i.e. Worf would understand).
For two, the js-beautified version is 56,586 lines! What could this be?
It's all hardcore math/algorithm type code. No comments, no indication of how to pick up the scent. Hmmm.
Welp, there goes my afteroon. See you on the flipside. tugs feverishly at massive ball of string^Wyarn^WJS
Here's a beautified gist, if you want to dig. https://gist.github.com/anonymous/52cd90a1fa9c36b1b3e87a431d...
(Seriously though, WTF is going on in that file? The last time I saw 55k lines of condensed algorithms, it was when I concatenated together all of emacs' source code from one of its earliest commits.)
Oh.. Is this just emscripten? It looks like compiler output. Yeah, "g | 0" is an asm.js trick.
Man.. This is a really effective way to obfuscate code, holy moly. So I'm guessing that's just graphviz's C code?
EDIT: Yup. At the very bottom, there's a single string, literally the only string in the entire file that gives any clue what the heck is going on: "vizRenderFromString".
And indeed, it leads us to https://github.com/mdaines/viz.js/blob/a8f5fd9ec41482e31bb0b... and more generally to the viz.js codebase: https://github.com/mdaines/viz.js
Oh, duh. Graphviz was written back in '93, and that sample code contains a citation back to its author.
What a cool program! And a cool sequence of layers... I love the onion-y nature of modern computing.