Running Around: 2025 running dataviz in R

[This article was first published on Rstats – quantixed, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

In this post I’ll use R to recap my running data from 2025. Previous round-ups are here (2021, 2022, 2023, not sure why I didn’t post one for 2024…).

I had a goal of running a total distance of 3650 km in 2025. In truth, after running 3500 km in 2024, I decided to aim for less (3000 km), but around springtime, I realised that I was at a similar total to the same point in 2024 and decided to increase the goal. This analysis will mainly look at distances, so we can use the summary data from Garmin Connect to do this. It is available as CSV, which can be easily downloaded and imported into R (see previous post for details). The existing code is sourced and then run as follows:

# function ----

summarise_my_running <- function(from, to, annual){
  # readAndCalc equivalent 
  process_data(activityStr = "running", fromStr = from, toStr = to, km = annual)
  
  # TSS score
  find_form(from = from, to = to)
  
  # distance map
  distanceTreemap(from = from, to = to)
  
  # calendar view
  calendarView(from = from, to = to)
}

# script ---- 

source("Script/garminFunctions.R")

# summarise_my_running(from = "2021-01-01", to = "2021-12-31", annual = 2021)
# summarise_my_running(from = "2022-01-01", to = "2022-12-31", annual = 2500)
# summarise_my_running(from = "2023-01-01", to = "2023-12-31", annual = 3000)
# summarise_my_running(from = "2024-01-01", to = "2024-12-31", annual = 3500)
summarise_my_running(from = "2025-01-01", to = "2025-12-31", annual = 3650)

I should make these functions into a package to make this easier…

Anyhow, this generates several graphics…

Progress towards the annual total

I passed the goal of 3650 km on December 24th and then rested a bit, finishing on a total of 3672 km. Let’s look at my progress compared to that linear target.

For most of the year I was ahead of schedule. In July and August, I fell a bit behind. Then the surges in spring and autumn (through marathon training) kept me in the black.

The weekly summary shows a similar picture.

For most of this year I stayed injury-free. If you are a runner, you’ll know that being injury-free is a relative term. What I mean is that I didn’t have an injury that stopped me from running, but there were periods where I was close to being out-of-action and I needed to ease off.

Run breakdown

How did I get to this total? As in previous years, it was helped by consistent run commuting and Sunday long runs. The calendar has plenty of green days (two run days of run commuting) and much fewer days of no running. At most, three consecutive days.

Let’s look at the run breakdown in a few other ways. The treemap, weighted histogram and raw histogram show that the majority of the distance was due to 4-5 km runs (the run-commutes). I ran fewer half-marathon distances this year but ran more greater-than-half-marathon distance routes which bumped up the total considerably. I also ran three marathons (Stratford-upon-Avon, Worcester and Frankfurt) which contributed 126 km.

This is a different picture to 2024, when I trained for and ran an ultramarathon.

Fitness throughout the year

Finally, how was my form during this period? We can look at this by calculating acute and chonic training load, and training stress balance (source code here).

I had two main training blocks for spring and autumn marathon season which can be seen in the blue (fitness) profile in the top plot. I ran three marathons on 27/4, 18/5 and 26/10 which can be seen as peaks in the black trace into the fresh zone (due to the taper) and abrupt drops due to the stress of running the marathon itself. I do not recommend running two marathons within 3 weeks of each other – one major lesson for me this year.

Summary

It was a good year in running for me. My most kms to date, I achieved PBs in 5K, 10K, HM and Marathon distances. The marathon is a place where I think I can improve most and this is my focus for 2026.

The post title is taken from “Running Around” by D.R.I.

To leave a comment for the author, please follow the link and comment on their blog: Rstats – quantixed.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)