Visualize cycling data from .fit files produced by Garmin, COROS, and other bike computers.
pip install garmin-fit-sdk matplotlib pandasFor GPS map support (optional):
pip install foliumpython plot_fit.py ride.fitPlots power, heart rate, speed, cadence, and altitude by default.
Choose specific fields:
python plot_fit.py ride.fit --fields "power,heart_rate,cadence"See all fields available in a file:
python plot_fit.py ride.fit --list-fieldsGenerate an interactive GPS map:
python plot_fit.py ride.fit --mapSaves a ride.html file you can open in any browser.
Any field listed under [record] by --list-fields can be plotted. Common ones:
| Field | Description |
|---|---|
power |
Power output (W) |
heart_rate |
Heart rate (bpm) |
speed |
Speed (km/h) |
cadence |
Cadence (rpm) |
altitude |
Elevation (m) |
temperature |
Temperature (°C) |
accumulated_power |
Cumulative power (J) |
battery_level |
Battery level (%) — if recorded by your device |
Pass multiple fields as a comma-separated string:
python plot_fit.py ride.fit --fields "power,cadence,heart_rate,altitude"- Uses garmin-fit-sdk rather than
fitparse, which fails on newer Garmin and COROS files. --list-fieldsshows every message type in the file. Only fields under[record]are time-series and plottable; fields under[session]and[lap]are single-value summaries printed to the console.- Battery data availability depends on your device firmware. COROS devices currently do not record battery level in
.fitfiles.