Swimming Data Viz

My primary form of exercise is swimming and I try to swim at least 3 times a week, for at least 30 minutes a session. To help track my progress this year I bought a swim watch from Garmin, the Garmin Swim, which tracks a lot of useful data, –  time per pool length, number of strokes per length, total time, etc. It also includes an online site,, where you upload your data from your watch to your account and you can see the results and details in an information dashboard. I love the watch. It’s a big improvement over just counting laps and keeping total time in a spreadsheet. But, I think there’s some room for improvement in the Garmin data viz dashboard.


Garmin Connect dashboard

When you upload data from a swim session and log in to view the data, you get a lot of summary data which I find useful for tracking progress. You also get a few graphs, some of which I just don’t find very effective or useful. In the image to the right, the top-most visual is a representation of each length of the pool that you swam, giving you the stroke (it’s pretty cool that the watch can distinguish between freestyle, back stroke, breast stroke, and butterfly), and the time for that pool length. You scroll like a slider to reveal more data. The main thing I want to do is compare the times for each length swam and the number of strokes for each length swam (trying to reduce the number of strokes needed to swim a pool length to increase efficiency). That doesn’t help me compare at all. In fact, it makes it very difficult to compare.


Garmin Connect dashboard

The next graph below it, shows the average pace per 100 yards over the session. That would be fine and interesting, but for the life of me, I can’t figure out why they chose to represent this data the way they did. Why is the vertical axis ordered from high to low? Why isn’t it represented with a more standard bar graph? Not intuitive at all in my opinion.

The next graph is a measure of strokes per length over the course of the session. This one actually does help me to compare my stroke count over time. But I would like to see it correlated to the interval (a set of laps swam without pausing the watch and resting). It’s nice to see that they labeled the vertical axis starting at 0 in this graph and ascending from there, unlike what was done in the previous graph.


Swim distance to time scatter plot

The last graph is similar in format and intent to the strokes graph. It has measures of SWOLF (Swim Golf – number of strokes + time for a pool length) and efficiency. In both cases, lower scores are better.

Fortunately, they also include the ability to download the data from a session to a .csv file so data viz geeks can play with representing the data with their own custom data visualizations. Here’s a couple of graphs of things I think might be interesting for Garmin to include.

It seems only natural that there would be a pretty strong correlation between distance swum and total time, but I wanted to see that in a scatter plot just to see how some of my recent swims looked. That points out an outlier session where I swam significantly further than normal in the 40 – 45 minute session length. Must’ve had my Wheaties that day I guess.


Total strokes and time per pool length for one swim session

Now wouldn’t it be cool if the Garmin Connect site allowed me to do this right within its information dashboard and I could hover over each of the dots to get details about the date of that swim and link to the detailed record of it. Then maybe I’d see that the real reason that I swam that distance in less time is that session I did no breast stroke, which is always a lot slower for me than freestyle.

Not only would I like to compare number of strokes for each pool length and total time for each pool length, but I’d like to see all of that in one graph. This way I can also see some correlation between number of strokes in one length and the time it took me to swim that one length, as in this quick mock-up to the right. Ideally this would also include some interactive functionality where I could roll over a bar and get additional details like the exact time and exact number of strokes.

Naturally, it would also be nice to visually compare results (and hopefully progress) over time across many exercise sessions. The current dashboard allows you to select up to four session for comparison but only lists the results in a tabular format. But, there’s no options for a visual comparison of this data, so once again, you’re only left with the option of downloading the data in a .csv file, to create what are really some pretty simple graphs but still a big improvement in aiding the analysis of one’s performance, as the two quick mock-ups done in Google docs show.


It’s amazing how easy devices like the Garmin Swim watch and Nike Fuel Band have made it to collect exercise data. The technology of wearable computers like this is pretty incredible and will no doubt only get better and smaller. But, I hope the makers of these devices realize the benefit of effective visualizations of the data they collect and put a corresponding effort into improving the data viz and information dashboards that can make it easier to digest all this great data that we’re collecting.