Subscribe Bookmark


Jun 23, 2011

Creating a custom map for my workout data in JMP 12

Custom map of female human body showing muscle groups

Using an add-in, I created this custom map in JMP. See how to make this, below.

In the previous post in this fitness and food series, I showed some examples of how I have been using local data filter to customize graphs of my workout data. JMP 12 offers a new alternative to list-based data filters in the form of selection filters, or graphs that can act as filters for one or more other graphs. JMP developer Dan Schikore posted about this new capability, and showed a few examples that used geographic maps as filters. I will be presenting visualizations of my workout data at Discovery Summit 2015 in San Diego, and Dan will be presenting a poster on selection filters. We hope you will come to the conference to learn more about this feature and all the other cool additions made for JMP 12!

When I mentioned to JMP visualization expert Xan Gregg that I wanted to use selection filters in my workout data project, he told me about an add-in in the File Exchange in the JMP User Community  called the Custom Map Creator, described in this post by Justin Mosiman. The Custom Map Creator simplifies the process of creating a set of new map shape files that JMP can use to define objects or areas. Justin blogged about creating a custom map of the floor containing JMP staff office. JMP testing manager Audrey Ventura later blogged about combining this map with other information to understand various factors that influenced temperature patterns on the JMP development office floor.

Xan thought I could use Justin's add-in to make a custom muscle structure map for visualizing and filtering my workout data. After I downloaded and ran the Custom Map Creator, a JMP graph window opened. I located a picture of female muscle structures, saved it and dragged the picture into the graph window. Then I clicked to define shapes like "Shoulders" and "Back." As I clicked to define the various muscle areas, the add-in automatically generated the shape file and X-Y coordinate file that JMP requires to define a custom map. Within an hour, I had generated a detailed custom map shape file defining front and back views of muscle areas. A picture of my completed map shape file is shown below.

Custom map creator 5-7-15

In retrospect, I could have been more specific with the muscle structures I traced, for example, outlining individual back muscles or creating different shapes for the front, back and side of the shoulder area. However, I thought that a map with muscle shape areas for all primary muscle areas that I work in the gym was a great starting point!

To make my custom map visible to JMP, I placed the shape files created by the add-in into the folder C:\Users\~myusername\AppData\Roaming\SAS\JMP\Maps.

In a previous post, I described how I used a JMP formula column to calculate a Total Weight Lifted metric for every row in my workout data table. Total Weight Lifted is the product of the amount of weight, number of weights used, repetitions and sets, and can be summarized at various levels, from row, to exercise, to primary body part and body zone. My data table already included primary body part as a grouping variable, which enabled me to match up my data with the shapes defined by my custom map. First, I created a graph of primary body part colored by the proportion of total weight lifted. To make this graph, I opened a new Graph Builder window, then performed the following steps:

  • Dragged Total Weight Lifted to the Color variable zone on the right
  • Chose % of Total as my Summary Statistic under the Map Shapes properties section
  • Dragged Primary Body Part into the Map Shape zone in the lower left part of the graph
  • Right clicked on the legend, chose Gradient, and clicked on the color bar next to Color Theme to select Muted Yellow to Red
  • Body shape colored by weight lifted setup

    To finalize the graph, I clicked Done in the Graph Builder window. This graph summarizes across all the data on my workouts that I have entered so far, and it's obvious that I lifted the greatest percentage of total weight during back exercises, followed by chest and shoulders, then various lower body areas, with smaller percentages attributable to calf and arm exercises. The proportions of weight lifted in this overall graph will likely change as I continue to enter data on older workouts where I lifted more weight for lower body exercises.

    By adding year as a wrap variable and using a Local Data Filter to restrict the months and years shown, I can create custom views, like the one below that contrasts the proportion of weight I lifted for each body area during six different Januaries. This graph shows me that in 1999 and 2000, I was lifting a greater percentage of total weight when training quadriceps and calves. I focus much less on those body areas in recent years, as my focus has shifted to shoulders, chest and back.

    Body shape colored by weight lifted by year

    Stay tuned for my next blog post, where I will show some examples of how I used my custom muscle map as both a selection filter and a target for selection filtering by other graphs.