A Rust reimplementation of ggplot2's grammar of graphics, compiled to
WebAssembly. Data comes from DuckDB-Wasm (with the
spatial extension) — everything below runs client-side.
geom_sf
DuckDB reads Natural Earth countries and ST_AsTexts the
geometry to WKT; ggplot-rs renders an SVG. Hover a country,
click one to zoom to its continent, or
scroll to zoom and drag to pan (double-click resets).
loading…
DuckDB reads the USGS
GeoJSON feed and ST_AsTexts each quake to WKT; ggplot-rs
colours the points by magnitude over a country basemap. Hover for the
location; scroll to zoom, drag to pan, double-click to reset
(ggplot-rs re-renders with the new window — the axes update too).
…
A 100k-point scatter (raster backend, nearest-point hover) linked to two ggplot-rs charts. Drag a box to brush — the selection highlights in the scatter, and both the per-group counts bar and the x-marginal histogram update. Or click a bar to isolate that group across all three views.
…
The USGS earthquakes in an interactive table (sort, search, paginate via Grid.js) beside a live ggplot-rs magnitude histogram. Drag the sliders to crossfilter both at once.
The same live earthquake data through many geoms — boxplots, violins, a
loess fit, kernel density, hex-binned and contoured 2-D density, a time
series, a polar rose, and a categorical heatmap. Every chart is one
render_plot({ geom, aes, … }) call into ggplot-rs; hover any
of them, and use the SVG/PNG buttons to download.
…
1,000,000 points drawn on the GPU. ggplot-rs renders the axes frame and
hands JS the data↔pixel mapping (scatter_frame); a WebGL
shader projects and draws every point on a transparent overlay canvas.
Hover for the nearest point.
…