Dc.js – Dimensional Charting JavaScript Library
dc-js.github.io
dc-js.github.io
Once you get your head around http://square.github.io/crossfilter/ and the manipulations you can do with groups, dc.js really makes rendering the data very simple.
1.7 has just been released and 2.0 is 'around the corner'.
It's a fantastic library and massive kudos to the people working on it. You make me look awesome :)
Applying a filter to one chart (e.g. clicking on Saturday) then get's reflected in the display of all the other charts.
Note you can also override the group().reduce() function if your data is a lot more complex.
In fact I went a bit crazy and had one set of reduce() functions create me the struct array I needed from which to create another crossfilter and apply that to a subset of charts.
I'm hopeful that, based on conversations in the dc group, crossfilter will just become the default data engine and this will be replaceable, but crossfilter is very powerful.
I'll be honest here and state that I don't have a deep knowledge of D3. dc.js had me producing a 'limited' set of charts within days.
What I have noticed is that the linechart really does not like you pushing too many data points to it. (I have 24 temperature min/max/avg points over a day for 8 sensors going back a year) however I think this may be a browser SVG limitation (6 other charts on the page). In this case, on a dashboard, this type of chart is nonsensical for what I am doing anyway (decision taken 30minutes ago).
An example of what I was able to do: http://www.eanalytica.com/google-analytics-cube/ uses the dc, crossfilter and the Google Analytics API to make a simple visualisation
Example: All 3,025 Penalties in the NFL 2013 Season - http://www.machete.io/board/view/NFL_2013_Penalties/3731630c...
The plan is to use the github model - free public boards, private boards will be a small monthly fee.
The dev team behind dc.js is also super nice and very responsive to questions / prs.
With crossfilter.js your data gets structured similarly and then bound to d3.js svg charts. dc.js provides the glue between the two to make it easier to work with. This allows you to interactively select part of a chart and immediately see other charts bound to that data get filtered at the same time.
It allows for an interesting way to explore / visualize data.
However, we ultimately had to switch again to a solution that was mandated by another part of the organization for IE8 compatibility and internal UI standards.
For example long text is a problem with charts and svg (in my experience). I'd like to pay for a version that fixes these things.
It's not D3-based, but it's one of the most popular JS charting libraries out there because it's has a well documented API and it's very customizable. We've had a lot of success with it producing visualizations at DataHero.com
D3 is like a paintbrush -- you can make anything with it if you're DaVinci, but it's a very low-level tool so you need to be a master if you want to make anything that's not my drippy kindergarten giraffe drawing.
(since the GP asked for both google charts and d3.js, the firewall answer was irrelevant)
dc.js marries crossfilter.js with d3.js -- that's it in a nutshell.
crossfilter allows you to group and filter your data in-memory very quickly, and potentially for a LOT of data See http://bl.ocks.org/milroc/7032589 for a good intro to crossfilter (launch the demo on slide #39 -- loads 36M flight records).
you likely already know what d3 does. dc.js makes it easy to generate dashboards where the user can interact with the charts (e.g. filter by Q1, Q2...see the NASDAQ example at https://dc-js.github.io/dc.js/)
Of note Dc generates d3 charts...so you can manipulate them to your hearts content. In my case, part of the tabbing functionality (context switch) is to destroy any in memory crossfilters AND hunt through the DOM for any d3 svg elements and delete them to aid browser performance.
If you don't need interactive charts that you can drill-down into, don't use it. If you do, this is the best of breed right now for this kind of thing. dc.js doesn't abstract away the d3 api -- you can still use it to your hearts content, but it sure makes these kinds of examples really easy to spin up with minimal code.
Your second paragraph appears to be the answer to their question, however. dc.js looks like it provides higher level constructs, so you're joining data to a bar chart, not data to a series of rectangles that you need to then make into a bar chart. That's great for people that don't have the time or inclination to learn d3, and since it sounds like you can still get access to the full d3 API, it sounds like it could be useful to people that do know d3, as it would give them good starting points for a bunch of types of graphs that they could then tweak at will.
Then, bugs surfaced after google altered login procedures. What should have been a simple JSONP call was replaced with a broken login page being returned instead of JSONP, that is: only if you hadn't logged into your google account for awhile. People who've never logged in or were logged into a google service were fine. Then they started throttling connections - per computer, per account, random without announcing it, etc. Debugging these things was frustrating.
So, in other words, a convenient feature becomes a liability very quickly.