Skip to content

Selection of an appropriate Javascript Charting Library

Ankesh Anand edited this page Jun 1, 2014 · 3 revisions

Backdrop

The Benchmark project requires several visualizations of the aggregate data. So we needed a visulaization library that would easily couple with the data and produce desirable results. We started off with HighCharts but it's licensing restrictions have forced us to look out for an alternate library.

Requirements

Essentials

  • An open source license: BSD, MIT, Apache, GPL etc. are all fine. Proprietary and CC-BY-NC are a no go.
  • Charts that need to supported: Bar, Column, Line (and their multi-series versions), Area, Pie
  • Under Active Development: The project has to be maintained down the years, so it's important that we choose a library which is stable and under active development.

Nice to have:

  • Control: A library that provides extensive configuration would be nice.
  • Aesthetics: Better looking charts are better.

Comparisons

These are the libraries that were looked into while arriving at an alternative:

Library License Support for all the required Charts Under Active Development
ChartJS MIT Horizontal Bar Charts are not supported No - the development stopped an year ago, lots of open issues
d3.js BSD Yes Yes
Flot MIT Yes Yes
Google Charts Apache Yes Yes
gRaphael MIT Yes No development since 2 years
Jit MIT No - Line charts are not supported Partially
nvd3 Apache Yes No, they are planning a rewrite and are not addressing any of the open issues with it until the rewrite is done.
xCharts MIT Horizontal Bar Charts are not supported No - the development stopped an year ago

Conclusion

Flot, d3.js and GoogleCharts all cater to our essential requirements. Flot and d3.js provide high degree of control over plots with their extensive API. Google Charts definitely lags here. Additionally, each API call in Google Charts gets routed through Google, I am not sure we want to do that.

It boils down to d3 and Flot, both of them have great documentation and API reference. They both are consistently used in production. Flot is used by the folks at Kibana, Flickr, Stackoverflow to name a few, and d3 by Square, New York Times etc. I am inclined to go with Flot because I think d3 would be an overkill for project. We don't want any custom SVG never-seen-before visualizations rather effective elementary plots. I have played around with Flot and it provides great control, is easily pluggable into the data. D3 has a steeper learning curve and there's lot more effort required to achieve the same results with it.

All in all, I feel Flot would serve the requirements best and would be a suitable alternative to HighCharts