Recs.
Updated
Specs
Pros
Pro Easily the most versatile of the JS libraries for manipulating data on the DOM
Pro SVG Support
Scalable Vector Graphics (SVG) provides resolution-independent, vector-based, animatable graphics.
Cons
Con High learning curve
The complexity and flexibility of D3.js results in it being a time-consuming tool to learn for many users.
D3 is incredibly flexible; probably more so than any other JavaScript visualization library at the time of this posting. With that flexibility comes increased complexity. If you just want to create some quick charts you will get results faster with something else.
Con "Selections" are elegant, but somewhat hard to grok
Selections are core to working with D3 beyond the basics. They're powerful and useful, but require new developers to get up to speed (e.g. set aside 30m to read and digest: https://github.com/mbostock/d3/wiki/Selections) and if used in the context of a larger application will result in a portion of the code using different patterns than the rest, requiring a translation layer in between.