Learn R Programming

Strava

Create artistic visualisations with your Strava exercise data

Examples

Facets

A plot of activities as small multiples. The concept behind this plot was originally inspired by Sisu.

Map

Elevations

Calendar

Ridges

Packed circles

How to use

Bulk export from Strava

The process for downloading data is described on the Strava website here: [https://support.strava.com/hc/en-us/articles/216918437-Exporting-your-Data-and-Bulk-Export#Bulk], but in essence, do the following:

  1. Log in to Strava
  2. Select "Settings" from the main drop-down menu at top right of the screen
  3. Select "My Account" from the navigation menu to the left of the screen.
  4. Under the "Download or Delete Your Account" heading, click the "Get Started" button.
  5. Under the "Download Request", heading, click the "Request Your Archive" button. Don't click anything else on that page, i.e. particularly not the "Request Account Deletion" button.
  6. Wait for an email to be sent
  7. Click the link in email to download zipped folder containing activities
  8. Unzip files

Install the packages

install.packages(c("devtools", "mapproj", "tidyverse", "gtools"))
devtools::install_github("marcusvolz/strava")
devtools::install_github("AtherEnergy/ggTimeSeries")

Load the library

library(strava)

Process the data

Note: Strava changed the way that activity files are bulk exported in ~May 2018. The process_data function only works with gpx files, so if your exported files are in some other format they will need to be converted (or imported into R some other way). One way to do this is to use GPSBabel, which converts between different GPS data formats (e.g. fit to gpx).

data <- process_data(<path to folder with gpx files>)

Plot activities as small multiples

p1 <- plot_facets(data)
ggsave("plots/facets001.png", p1, width = 20, height = 20, units = "cm")

Plot activity map

p2 <- plot_map(data, lon_min = 144.9, lon_max = 145.73, lat_min = -38.1, lat_max = -37.475)
ggsave("plots/map001.png", p2, width = 20, height = 15, units = "cm", dpi = 600)

Plot elevation profiles

Note: Strava changed the way that activity files are bulk exported in ~May 2018. Unfortunately this plot will not work with files exported from Strava after this time.

p3 <- plot_elevations(data)
ggsave("plots/elevations001.png", p3, width = 20, height = 20, units = "cm")

Plot calendar

p4 <- plot_calendar(data, unit = "distance")
ggsave("plots/calendar001.png", p4, width = 20, height = 20, units = "cm")

Plot ridges

p5 <- plot_ridges(data)
ggsave("plots/ridges001.png", p5, width = 20, height = 20, units = "cm")

Plot packed circles

p6 <- plot_packed_circles(data)
ggsave("plots/packed_circles001.png", p6, width = 20, height = 20, units = "cm")

Copy Link

Version

Version

0.0.0.9001

License

What license is it under?

Maintainer

Marcus Volz

Last Published

July 29th, 2021

Functions in strava (0.0.0.9001)

process_data

Processes gpx files and stores the result in a data frame
plot_elevations

Creates a plot of elevation profiles as small multiples
%>%

Pipe operator
plot_facets

Creates a plot of activities as small multiples
plot_map

Plots activities superimposed on a map
plot_ridges

Plot ridges of Strava activities by weekdays
plot_calendar

Display Strava activities as calendar heat map
plot_packed_circles

Display Strava activities as packed circles