Rio 2016 athletes
athletes.py loads the Rio 2016 roster with Polars, a dataframe library for Python, and calculates age, medal awards, sport participation, and athlete profiles. One notebook backs all three views.
Compare the views
In Overview, change Sport. The native marimo control selects one of 29 prepared notebook states. Four mo-value totals, the browser-drawn roster, and the top_sports chart update from that result.
In Explorer, select a sport bar or brush an age range. Mosaic coordinates that browser-side selection while the notebook remains the source of the complete athlete table.
In Field, move through the roster as a four-chapter Three.js 3D presentation. The same records regroup by sport, medal status, height, weight, and age. Its sport control uses the same 29 prepared states as Overview.
Open Notebook to inspect the controls and Polars operations in their analytical context.
Run locally
From the repository root:
uv run marimo edit examples/athletes.py --sandboxStudio opens overview, the notebook's default view. Switch among overview, explorer, and field. The notebook fetches the pinned athlete CSV from raw.githubusercontent.com. The Explorer and Field views also load the remote font or module origins declared by their view source.
Read the source
The three views use sibling-relative URLs, so their links survive a deployment base path and a copied parent directory.