D3 3.3 Released
github.com
github.com
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?
Make sure to check out Mike Bostock's (d3's primary author) absurdly large collection of examples: http://bl.ocks.org/mbostock
Conversely, I very rarely see any demonstrations of non-Web plotting/visualization tools (MATLAB, matplotlib, gnuplot, etc.) that look nearly as nice.
What's the reason for this? Does D3 look that nice out of the box, or are D3 users/demonstrators just more interested in flipping the appropriate bits and writing the code and doing the work to make sure that their data looks nice? I ask because I'm about to start playing with a personal project that isn't web based and that needs plotting. I'm seriously contemplating embedding a WebKit panel and using D3 to render the graphics, but I haven't had the chance to really invest a lot of time in studying plotting options. D3 has definitely given the best first impression though.
Notice how the ticks look, which is dynamically handled, for instance. There's some tweakage behind how many ticks to display, where to place ticks, and other Tuftian goodness.
D3 pure and simple binds data to DOM elements and keeps the relationship updated, but nothing more. Those DOM elements could be pure text, or tables, or whatever else you want. It just so happens that D3 works well when bound to SVG elements, but that's purely up to you.
D3 has built-in components to draw small details like axes precisely, which lower the barrier to making good data graphics.
Also, the feedback loop in my experience is much tighter than with tools like Processing, R or Matlab, since you can manipulate elements directly in your browser, instead of having to compile code/generate a new raster image every time.
D3.js is a JavaScript library for manipulating documents based on data. D3 helps you bring data to life using HTML, SVG and CSS. D3’s emphasis on web standards gives you the full capabilities of modern browsers without tying yourself to a proprietary framework, combining powerful visualization components and a data-driven approach to DOM manipulation.
The above is an excellent example of both what d3 is AND how it works.
EDIT: oops, typo
And custom geometry transforms: https://github.com/mbostock/d3/wiki/Geo-Streams#wiki-transfo...
We are doing a graph diagram using force directed layout, and are displaying various overlays of paths through the graph based on input data parameters. As I mentioned, this is currently all fine in SVG, however, we'd like to in the future be able to make those overlays a bit more dynamic in the graphic sense - by adding some effects that canvas makes easy. Also, our future drawing of the graph will include enough custom shapes and images/sprites that the canvas context + drawing objects will result in cleaner code than the equivalent SVG operations.
Also, and this part is a personal bias, I just dislike SVG and it's DOM for runtime graphics manipulation, and prefer the canvas API for it.
Can you provide a link to this?
https://github.com/blog/1547-release-your-software
Check out the list of D3 releases https://github.com/mbostock/d3/releases/
> You can also attach binary assets (such as compiled executables, minified scripts, documentation) to a release.
Nice. I knew they didn't turn Downloads off for good (API still works, or at least worked some time ago), but I didn't expect such move.
- Brush transitions http://bl.ocks.org/mbostock/6216724
- Tools to help dynamic simplification (scale appropriate geometry on zoom): http://bl.ocks.org/mbostock/6252418
- Bug fixes
- Others?