Selection of an appropriate Javascript Charting Library
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.
- 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.
- Control: A library that provides extensive configuration would be nice.
- Aesthetics: Better looking charts are better.
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 |
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