vizcrush + Chart.js

Typed arrays → lttb / bin2d → ordinary Chart.js datasets

vizcrush reduces the expensive raw data; Chart.js handles axes, interaction, and rendering.

Line chart: LTTB downsampled 1M → 2000 points

Scatter density: bin2d 500K → 128×128 grid