More bike data visualized

More bike data visualized

It’s been a few months since I visualized some bike data so it seems we are due to post something else cool.

I love riding at Dryer Road Park in Victor, New York. It has a great mix of groomed trails throughout the woods and has a few challenging trails like Black Widow, Crap My Pants, and Juicy Bacon to name a few.

I have cracked two full suspension bikes there (WTF?) so I am down to my old hard tail bike. I need a new one, but the old Blast is a pretty trusty bike and rarely has an issue I can’t fix…

I’ve been neglecting the maintenance on this bike all summer long.  This past weekend, I spent a few hours changing parts and tuning her up.  She was as good as new on my most recent ride.  As usual, I had my Jaybird Freedoms rocking some tunes, my Oakleys with the PRIZM lens lighting up the trails,  Strava recording the ride on my iPhone, and a FitBit Charge 2 doing it’s thing.  That’s a lot of gear!

I felt pretty good on one of my longer rides of the summer.  I logged into Strava to check out the ride and saw I set personal records on Black Widow and the Slalom Run, along with a 2nd best time on Bones.  I thought I’d visualize this session later that night.


I had never exported data from Strava before, so before I did anything I did a quick Google search.  Any time I am trying to get some data, it seems Craig Bloodworth has already paved the way.  I came across his web data connector for Strava and in a few seconds I had my activity data and ride maps in Tableau.  Make sure to check out the nifty UI on the left for other great WDCs from the Information Lab.

I did have an issue though.  The activity data is summary.  The Strava API doesn’t give you detailed stats for the duration of the ride.  Sooooooooooo…..I downloaded the GPX data from Strava.  This is basically just the GPS data not including any of the session data.  I did this for the 13 rides I completed at Dryer Road Park.

Then, I used a GPX to CSV converter online to make it a readable format for Tableau.  This converter also enriches the data with estimated speed, pace, slope, distance and elevation based on the individual GPS pings.  This data will allow me to show speed over time during a ride.  I unioned the 13 csv files in Tableau.  This is the primary data source for my visualization.  I did blend it with the summary activity data from the web data connector.  I also used dashboard actions to cross filter the two data sources.


I wanted the map to be the main feature and generally to look pretty badass.  That isn’t too hard as the trails already look cool on a map, but I really wanted to highlight the trails I ride most.  I ride a pretty consistent set of trails, but from time to time I’ll ride others.  I wanted the map to act like the eye tracking study below – showing hotspots.

My map would essentially be 13 rides overlaid on top of each other.  To achieve the hot spot effect, I used a dual axis map and plotted each point with a semi-transparent custom shape (used as hurricanes on my sharknado map).  I used the thinest white line possible and created a path on top of the shapes.  The glowing shape really lit up my hot spot trails (the more difficult stuff).

Next, I created a speed chart with a 5 minute moving average line.  The points on this chart are plotted by discrete minutes, but the detail is down to the second in the view.  Admittedly, the points are pretty small.  I wanted to give some indication on the axis where you should look when the highlight actions are in play.  I created a few different copies of the datetime field in this workbook and used two targeted highlight actions to make this work.  The axis highlighter for this chart is a separate worksheet on a dual axis.  The highlight action pulls the green point forward all while the shape on the map is highlighted and not the entire white line.

Next up is the summary statistic chart.  The data shown here is summary data from the Strava web data connector.  I wrote a bunch of calcs to translate the metic data to imperial units using the api documentation.  I also wrote a few more to turn seconds in the HH:mm:ss format.  All of that text is a single text mark on one sheet.  It is dynamic and will filter when you select one or more rides.  The icons are actually sheets.  They are shapes on an axis so I could color them just right.

Download the workbook if you are interested in any of these techniques.  Otherwise, click on the image below for the interactive version.

Leave a Reply