Using my muscle map as a selection filter for workout data
JMP 12 introduced the ability to create a selection filter, or a graph that filters other graphs in a report. I have used this feature quite a bit since its introduction, and I love the flexibility it provides! I hope you had a chance to see developer Dan Schikore's post on selection filtering in JMP 12, which included some examples of using geographic maps as selection filters.
In my previous post, I described how I created a set of muscle shape files for visualizing my workout data. Graphs with custom map shapes like mine can also be used as selection filters, or they can be targets of selection filtering by another graph.
Creating a selection filter
To create a report containing a selection filter, I usually start by using the Combine Windows feature to place two or more graphs in the same report window. I like to place the graph acting as a filter on the left, since I'm accustomed to the Local Data Filter being there.
First, place the graph windows next to one another in the approximate arrangement you want.
On Windows, you can check the boxes in the lower right-hand corner of graph windows you want to place together, and choose Combine Windows from the pull down menu.
On Mac, you can choose Combine Windows... from under the Window menu and click boxes for the the reports you want to combine. For more information about Mac Combine Windows, see Chris Butler's post on the topic.
Within the combined report, choose Edit Application from the Report red triangle menu.
When the application opens for editing in App Builder, right-click on the graph you want to use as the filter and choose Use as Selection Filter.
Run the application from its red triangle menu to open a new window where the selected graph will now be a live filter.
I used the steps above to create a combined report that used my custom muscle map as a selection filter for a stacked bar chart of total weight lifted for exercises, grouped by primary body part. I described in an earlier post how I calculated total weight lifted using a JMP formula for all my unique rep-set combinations, and in another post, I shared how I grouped exercises using the Recode platform in JMP.
Filtering one graph with another graph
First, here is a view of the combined report without any selection applied. As a reminder, the muscle map shown on the left is colored by the proportion of total weight I lifted for different primary body part areas over my entire data set. On the right, I created a stacked bar chart in Graph Builder, using primary body part as an Overlay variable. Various colors correspond to different body areas worked by exercises. (I'm still in the process of entering my data, so there are a few months in the middle without much data.)
In the view below, I selected two body parts in my filter graphic, shoulders and back. The stacked bar chart updated accordingly to show total weight lifted data for only those areas. Using filtered views like this one makes it easier to see how my training patterns for specific body areas have changed over time. According to the unfiltered graph above, I lifted similar monthly amounts of total weight during 1998 and 1999 as in recent months, but a greater proportion of that total weight is lifted during shoulder and back exercises now.
I have also created reports where my custom map is filtered by another summary graph. For example, on the left below is a bar graph of total weight lifted by unique workout session. From this graph, I can zero in on sessions where total weight lifted was higher or lower than usual. By using this graph as a filter, I can select bars corresponding to specific workouts of interest, then drill down into a view of one or more days and compare the proportion of total weight lifted by body area for those selected sessions by filtering my muscle map.
Which of these things is not like the other?
My filtered body maps for the four workouts I selected remind me of the classic Sesame Street song which asks "Which of these things is not like the others?" I chose this set of four workouts because they were from similarly structured days of the same program that worked the same body parts. Although the total weight lifted patterns for three of the sessions did look very similar, it turns out that I chose bodyweight bench pushups as a chest exercise on 1/5/2015. Since I'm never quite sure how to quantify the amount of body weight lifted for exercises like that one, I usually put a 1 in the weight column, resulting in a low total weight lifted number for chest in that session. I could change the filtered shape graph to reflect a different metric like total weight lifted by primary body part rather than using a proportion here, but then the colors would become much more sensitive to the total number of sets I completed.
More to come...
I'm still working on entering my historical workout data into JMP and looking forward to presenting at Discovery Summit in San Diego this September. JMP Developer Dan Schikore will be presenting a poster on selection filters at the conference, so I hope you will have a chance to learn more about this useful feature!
I'll also be speaking at the upcoming QS15 quantified self conference in San Francisco and hosting an office hours session there. Stay tuned, because recently, I began experimenting with a Push Strength monitoring band that collects additional metrics about the sets and reps I perform, including velocity, power, sets, reps, and timing of the eccentric and concentric phase of the lifts. I can export the data for my workouts as CSV and visualize it in JMP, providing me some interesting and much higher resolution information about what I'm doing in the gym.