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.
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.
Chart.js currently offers only 6 graph types, and lacks the flexibility offered by other options. For example, controlling the display of tooltips is fairly limited.
Charts.js offers 6 chart types (Bar, Line, Radar, Doughnut & Pie, Polar area, and Bubble). In addition, you can choose to fill in area, show data points as scatter or create mixed charts.
The commercial nature if you want to sell closed source projects using it shouldn't be an issue if you make money out of your product...
For non-profit or personal project, it is under the permissive Creative Commons Attribution-NonCommercial 3.0 License.
Raphael is a draw library used to make charts. It's not a chart-only library and as such it may have limitations compared to libraries that are only used to build charts.
Everything that is drawn in Raphael is an object which means it is easy to manipulate any part of the rendered image after it is processed. It uses an event handler system for user inputs which makes it easy to learn for JavaScript developers used to event based libraries.
An interactive chart demo.
This style of handling objects makes Raphael a good fit for rendering interactive diagrams and charts that can also interact with other parts of the page.
Several built-in animations (such as ways of easing) are provided for you out of the box, but Raphael also allows cubic beziers for more complicated easing functions. Any drawing object property can be modified making it similar to css animations in jQuery.
Because Raphael supports rendering VML + SVG, it is one of the few drawing libraries that is backwards compatible with older browsers that do not support canvas.
amCharts includes everything a graphing library can provide. From low-level customization to high level complexities, they're all there. Check out their demos page to get creative ideas about using the library on your site.
The syntax is pretty simple and self explanatory too, here's a quick example of a new chart:
var chart = new AmCharts.AmSerialChart();
chart.dataProvider = chartData;
chart.categoryField = "country";
var graph = new AmCharts.AmGraph();
graph.valueField = "visits";
graph.type = "column";
chart.addGraph(graph);
chart.write('chartdiv');
Normally coding tutorials won't be required for integrating amCharts thanks to the Live editor. However if any help is required the amCharts website has a tutorial for everything ; be it MySQL integration, real-time data or even adding to Wordpress.
amCharts started out making flash charts back in 2006, they then shifted to js based charts as demand for flash decreased. Considering that, they're one of the most experienced companies out there with a stable product.
ZoomCharts is built for mobile devices. All native multi-touch gestures are built in. Data navigation and exploration is as native as it could ever be.
ZoomCharts are canvas based, as tested with default settings, more than 20 times faster as svg based competitor with same data and default settings. Video available on ZoomCharts youtube channel.
You can get extremely granular with the styling (which is very CSS-like). You can customize pretty much any aspect of a chart, so they can match your application or website perfectly.
Google Charts has a large selection of chart types to get started with and have up in running in very little time. It uses sensible defaults, but has flexible options to allow for customization when needed. Better than most other free to use Chart APIs and has great documentation provided by Google.