Most chart libraries trade D3 18,089 's freedom for a finished chart from a configuration object. Each subsection draws the same chart, BookNest's units per book with the best seller first, from TOTALS, which a four-line helper (booknest-totals.js) sums from the sample-data rows with plain Array.reduce. Versions, licences and stars were read from npm 2,036 and GitHub 29 on 26 September 2026:
| Library | Version | Licence | Draws with | GitHub stars |
|---|---|---|---|---|
| D3 | 7.9.0 | ISC | SVG or canvas | 113,800 |
| Observable Plot 40,840 | 0.6.17 | ISC | SVG | 5,400 |
| Chart.js 38,651 | 4.5.1 | MIT | Canvas | 67,700 |
| Apache ECharts 129 | 6.1.0 | Apache-2.0 | Canvas or SVG | 67,400 |
| Vega-Lite 126 | 6.4.3 | BSD-3-Clause | SVG or canvas | 5,500 |
| Highcharts 19,788 | 13.1.1 | Commercial | SVG | 12,500 |
| Recharts 126 | 3.10.1 | MIT | SVG | 27,600 |
| Nivo | 0.99.0 | MIT | SVG, canvas, HTML | 14,100 |
| visx 21,064 | 4.0.0 | MIT | SVG | 21,100 |
| Plotly.js 26,036 | 4.1.1 | MIT | SVG and WebGL | 18,300 |