expressive-charts is a library of composable motion and expressive effects for SVG charts. Install it with npm install expressive-charts; its README has a quick start, and the API reference documents every export.
Each page puts the library's own charts beside charts drawn by other code, with the same effects on both. Switch your system between light and dark to see both themes, and turn on reduced motion to see where every effect ends.
barChart and on a hand-written SVG chart through expressive(), with staged sorting and a flash on the bars that change.donutChart, barChart and a D3 pie through expressive(), with a hover effect picker and staggered flashes after each match.lineChart, a D3 line through expressive() and a Vega-Lite line through fromVegaView(), each with the goals line red below xG and a ball riding its leading edge. One Play button and scrubber drive the first two.donutChart and category columns on barChart in one chartSwitch, each slice turning into its own column and back with morph(), and a control to compare its two mappings.barChart, goals vs xG on lineChart and shots on D3 columns, linked by matchweek with link(); each player's change since the last matchweek rising past their bar with delta(); and a D3 slope chart with each player's change since matchweek 1 written by label(), traced on hover with trace().expressive(), which reads their circles and paths by tag; the curved line red below xG with a ball riding its tip, and a hover effect picker that swaps the effects in place with update({ on }).playback(), D3 columns followed with watch, a switch with many pairs, and the first draw.