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.
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.
Highcharts is not free for commercial projects, with a starting price of $90/USD for use on one simple webpage and, up to $3,600 for maintenance and support.
Supports almost all chart types one could ever want. From the most common bar charts, area charts, and donut charts, to funnel charts, polar charts or Japanese Candlestick charts.
Events can be distributed to chart elements which respond to user actions. Event listeners are simple JavaScript functions which are very easy to use and understand.
Plugins for AngularJS, Ember.js, jQuery, Meteor, Node.js, React: http://www.anychart.com/plugins
Technical integration templates and samples for all popular programming languages, frameworks and libraries, and databases: http://www.anychart.com/integrations/
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. gRaphaël supports IE 6+, Firefox 3.0+, Safari 3.0+, and Opera 9.5+.
Other libs just can't compete with the amount of built-in functionality ZC offers.
Built-in tokenized logic rules
Easy to use zooming/preview functionality available across the library
Share legends, crosshairs, and zoom controls across charts
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.