line-charts

Seven open-source line-charting libraries building the same annotated chart from the same data, in the same palette, live, below. Not "can it draw a line" — every modern library can — but what an editorial chart costs: direct labels, an annotation with a leader line, a shaded event band, a reference line, and two series emphasised over three.

Chart: One chart, seven libraries. Line counts are measured from the code that just ran.

Every cell is the library's own demo page, embedded — click its name for the full page with the source expanded underneath. What it took to build each one is in BUILD-NOTES.md; the method is in ANALYSIS.md and the scorecard and verdict are in EVALUATION.md.

The libraries

D3

Low-level toolkit. The quality ceiling — you build every pixel, including the arrowhead.

~90 KB · ISC/BSD

Observable Plot

Concise grammar of graphics from D3's author. Annotation is just another mark.

~65 KB · ISC

Vega-Lite

Charts as declarative JSON specs you can lint and diff. Annotation means layers.

~320 KB · BSD-3

Plotly.js

Batteries-included. Shapes, annotations and real arrows for free; a megabyte to ship.

~1.1 MB · MIT

Chart.js

The popular default. Editorial furniture needs a plugin — and end labels need canvas.

~70 KB + ~30 KB plugin · MIT

Apache ECharts

Production-hardened. The most complete annotation vocabulary of the seven.

~330 KB · Apache-2.0

µPlot

The performance option. ~18 KB and milliseconds — and no annotation model at all.

~18 KB · MIT

The two test charts

Retired after v1: CO₂ at Mauna Loa and BTC-USD daily. Both were "plot a line and let the defaults do the work", which every library here is good at, so neither told you anything. Their CSVs are still in assets/data/.

Considered, not included (yet)

Palette is the validated categorical reference palette (colour-blind-safe, light + dark). Add a library: copy demos/uplot.html + demos/uplot.js, swap the CDN and the two render functions, add a cell here.