Recs.
Updated
Specs
Pros
Cons
Con Steep 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 Examples online don't always work
Frequently copy-pasting a working online graph to your environment results in errors. In the worst case, you simply get a blank screen, no error, no data, no clue about what's wrong.
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.
Con No graph export options
OK, fantastic, after a couple weeks you got your wonderful chart. Your boss is so happy and says: "can print a copy?". Now you're in trouble. Without options for exporting or printing, you need to move it manually to another library to convert the SVG-to-something-printable. Learn how to use it and program it to generate a printable version or .PNG/.JPG.
But what if you want to export HTML with some images: no problem. Take another library, learn how to use it and program it to generate a printable version or .PNG/.JPG.
But what if you want to export your maps with some images: no problem. Take another library, learn how to use it and program it to generate a printable version or .PNG/.JPG.