Subscribe Bookmark


Jun 23, 2011

Exploring workout data history with Graph Builder

I have already posted in my fitness and food blog series about automating the import of my BodyMedia activity and food log data files via JSL and visualizing my data in JMP. I presented an e-poster on this project at the 2014  Discovery Summit US conference, which I've posted in the JMP User Community.

Unfortunately, I wasn't able to automate the import of the historical workout data I have tracked in written notebooks for years. I recently adopted the Full Fitness iPhone app to track workouts I do without my notebook in front of me. Full Fitness allows me to enter custom workouts and export my data to CSV. However, I've found it's quicker to type my older workout data into a table so I can copy and paste data for repeated workouts.

Now that I've dedicated some early morning hours to data entry, I have all of my workouts from 2014 and 13 of the past 17 Januaries saved in a JMP data table. What kind of information does this table contain? Most lines record unique exercise, weight and rep combination from weight training workouts. I record the date and name of the workout program I am following that day, and I indicate the number of weights I used (1 for a barbell, 2 for dumbbells). I created a formula column that uses this information to calculate a Total Weight Lifted metric for each row in my table.

total weight lifted formula

I note my starting and ending time or simply the duration of my workout, if I wrote that down. In the past, I tracked the duration of my cardio workouts, but since I don't train for endurance sports now, I leave it to my activity monitor to capture information on non-weight training activity.  Here is an example of how the table looks for the first workout I completed in 2014. (I'll explain more about how I created the Primary Body Part column in my next post.)

Workouts in a data table


Below, I used Graph Builder to create a multi-element chart to summarize my 2014 workout timing and volume information by day of the week. A box plot element on top shows information about the duration of my workouts, a heat map element in the middle displays the relative frequency of my workout start times, and the bar element at the bottom summarizes the total weight I lifted each day across all exercises.

You can clearly see from my data that I usually work out on Tuesday, Thursday, Saturday and Sunday -- and Friday workouts are a rare occurrence for me. I tend to work out earlier in the morning during the week, and slightly later on the weekends. I sometimes work out during my lunch hour, but usually only early in the week or if I miss a scheduled morning workout.

Workout schedule in Graph Builder in JMP

I found it interesting to compare my weekly workout patterns with the aggregated data from Up activity monitor users as shown on the Jawbone blog. Up users log the most workouts on Monday, and then workout logging declines steadily every day throughout the week. Like me, Up users log the fewest workouts on Friday. They suggested that perhaps this day-of-week effect could be attributed to higher motivation to work out after weekend indulgences. Post-weekend compensation might also explain users eating more "health foods" earlier in the week (the "Quinoa Monday" effect). I was excited to see that a similar percentage of female and male Jawbone users logged weight training workouts! Lifting weights has been shown to have beneficial effects on lipid profiles and resting blood glucose levels, and also appears to be a relatively low-impact form of exercise that can help maintain or improve bone density, which is crucially important for women as we age.

To recreate my workout summary graph in Graph Builder, you will need to first create a Day of Week variable.  You can quickly add this column to your data table by right-clicking on the column header of a continuous Date variable column and choosing New Formula Column > Date Time > Day of Week.  (This highly useful feature is new in JMP 12.) I recoded my day-of-week numbers into day-of-week abbreviations.  Then I dragged

  • Day Abbr (recoded Day of Week) to the X axis
  • Workout duration to the Y axis
  • Start Time to the Y axis, below duration so that it created a second section, and right clicked to change to a heat map element
  • Total Weight Lifted to the Y axis below start time, in a third separate section, and changed it to a bar element
  • I customized my color theme to a purple one by double clicking on the legend elements to edit their colors and themes -- since everything looks better in purple!

    Stay tuned for my next blog post on this topic, where I'll show how I used the JMP 12 Recode platform to consolidate and clean up my workout data.