I'm also a broken record in this regard. I used Backbone a few times,
such as getting bidirectional linking between parallel coordinates,
SlickGrid, and some pie charts:
http://exposedata.com/parallel/ -- this code is old and not designed to be read
At the time I was using my own parallel coordinates, then the d3
version came out, and it only took 15 minutes to swap the d3 version
in. Backbone made it easy to do that, because the charts weren't
hardcoded together-- they were coordinated with a Backbone Model.
On the other hand, check out this page:
http://bl.ocks.org/d/3150059/
It's similar with bidirectional linking, rendering , a search, group
filtering, brushing, etc. Parallel coordinates is a good visualization
to work with, because it keeps you from assuming the number of
dimensions involved in the app.
The kicker? It's all hardcoded together! It's also much simpler.
Instead of bringing in 19 javascript files, some CSS dependencies
(SlickGrid) and tying together a bunch of libraries, it's just d3.js
and Underscore with a ~600 line javascript file. I think for most
people, especially beginners, just hardcoding stuff till it works is a
good first step, since you can start from any d3 example and work from
there.
My latest effort is factoring *just* parallel coordinates into a
reusable chart that has that use case in mind: bidirectional linking
with other visualizations, possibly through Backbone, Dance.js, Miso
Dataset, or other library. Need to create examples of this, I'm still
on the hunt for a good data table that's simpler than SlickGrid:
http://syntagmatic.github.com/parallel-coordinates/
I use d3.dispatch to emit events for linking:
https://github.com/syntagmatic/parallel-coordinates#parcoords_on
One downside to d3.dispatch is you can only attach one event handler.
With Backbone, you can have several functions listening to the same
event. This is a crucial difference when you have more then 2
visualizations on a page. When I go to build applications with my own
library, I will probably still have a Backbone model listening to
parallel coordinates and broadcasting those events.
Another feature Backbone has is serializing the model loading it with
JSON. When I get some time, I was going to look at adding this to
d3.svg.brush. That way I could save the brushes in parallel
coordinates, and re-initialize them easily. It's an important feature
to turn the visualization from a toy into a tool.
See these discussions on that issue:
https://groups.google.com/forum/?fromgroups#!searchin/d3-js/json$20serialize
https://groups.google.com/forum/?fromgroups#!searchin/d3-js/json$20serialization