Here's something I wrote a while ago using d3 for my own use. It's entirely client-side js. http://neuvc.com/labs/vcbar/ It charts the investment activity of VCs by pulling Crunhbase data. I would not have written this if I didn't have d3 to use as a crutch for the bar charts.
I wish I was as smart as you because D3 makes almost zero sense to me. I think there's something I'm missing that, once it clicks, will change things. <fingers crossed/>
Perhaps you're thinking to imperatively. Read a simple D3 tutorial and things will click.
If you want a higher level of abstraction for d3, try Chartbuilder, which I find doesn't cover anywhere near my use cases: https://github.com/Quartz/Chartbuilder.
Another tool is Bret Victor's proof-of-content editor: http://worrydream.com/#!/DrawingDynamicVisualizationsTalk.
Check it out at http://magicmaps.evanmiller.org/gallery.html.
I expect to write a full research report at some point
(at which I'll make the research prototype available as
well).
http://worrydream.com/DrawingDynamicVisualizationsTalkAddend...Huh? I find D3 code to create a visualisation be much much smaller when comparing with competing implementation of the same visualization.
But then, my metric of comparison is creating visualisations from scratch with imperative drawing APIs (on Canvas/SVG).
Perhaps you want a one-line function invocation to draw the whole thing?
D3 is not for that, it's a plotting HELPER library, not an ready-made collection of plots.
That said, it's not difficult to adapt individual plots made with it.
There are a ton of cool interpolation and features and such, and you can use them probably here and there without everything else from D3, and I have managed to do that on occasion. If someone were to make a debugger specifically for D3 or just generally say "forget JavaScript and drink the coolaid and just copy our awesomeness and forget about making your own" I think that would be in line with how D3 is presented. The composable part is spot on. I think OpenFrameworks also suffers from this. They demo their awesome thing and eventually make a library in OF, but as far as using OF itself to make that original awesomeness, that's when one would just say "well, I guess OF is cool for doing exactly what you see people doing with OF but anything more is just C++" ... anyway. So it isn't a framework or an abstraction per se, but a series of just previously developed functions that let you repeat what the author did.
Composability is achieved with configurable functions. Is there an alternate solution you propose? What helper would be useful for data that changes over time?