Reveal patterns and trends in physiological and performance data from basketball games and practices to help the analyst, coach, and trainer make proactive decisions.



In the recent years, sports analytics has become a growing field, leveraging real time analytics compared against historical trends to help coaches optimize player performance. (A notable example being the Moneyball book and movie.) We partnered with a collegiate basketball team to visualize their basketball data, which contains combined physiological and performance data.

Our users
In an initial interview with our partners, we identified their roles, experience with using data, and their desired goals from collecting the data. The primary users for the visualization are the Analyst and Strengths Coach, who compares trends leading up to a game with game outcome. These users may use the visualization to back up their recommendations with the basketball coach, a secondary user.

Analyst, Primary user
I want a summary, something I can look at quickly.

Strengths Coach, Primary user
I have a ton of data, but I don’t know how to use it effectively yet.

Coach, Secondary user
I hate the word “analytics.” Just show me the patterns.

There are several sites that collect and share performance data for NBA games, which are manually tracked. We have a unique opportunity to also work with raw physiological data that has been gathered through sensors worn under the players' uniforms.

For each player, our dataset contains the following measures for both game days and practice sessions:

Aggregated (per session)
Per Minute (games only)

More data, more problems
Because we were dealing with multiple dataset files, measures, and units, there were several data manipulations that were undertaken to organize the data and make it usable to feed into Tableau.

  1. Deletion of bad data
    • Malfunctioning straps
    • Malfunctioning software
    • Extreme outliers
  2. Unit conversion
    • HH:MM:SS to seconds
  3. Normalization
    • Performance data is recorded based on the game clock (not including timeouts). Physiological data is recorded on a continuous clock and may start up to 30 minutes before the game clock starts. We manually normalized the two clocks by watching video of a recorded game, marking and timing the time outs. We also assumed commercials were 30 seconds on average.

Through this exercise, we were able to make recommendations to our user for how for more effectively track data in the future. In particular, tracking the performance data relative to the continuous clock will make data analysis much easier.

Initial questions and experiments in Tableau
Based on on user interviews and our understanding of the data, we wanted to use visualizations to try to answer some preliminary questions that our user may have about the data.

1. How does the previous seven days of practice affect player performance at a game?

The user arrives at the calendar overview of aggregated physiological metrics, filterable by player.
Left: Original sketch, Right: Tableau implementation.

2. Are we overtraining our players that may result in injuries or poorer game performance?

The user selects a range on the calendar to view the breakdown of metrics and spot outliers.

3. How might spikes in heart rate correlate with shot accuracy?

The user zooms in on a specific game day to compare how physiology and performance are correlated for one player. User quote: "This is the story I would have guessed, but I wouldn't have guessed 100% turnovers." (Referring to rate of losing the ball possession at the red heart rate zone.)

Building an interactive interface in Tableau
Interactivity adds more utility to a visualization, supports exploration, and aids in story telling. The DataBall visualization interface supports several interactions to navigate through multiple views and zoom in on detailed information, including:

  1. Filtering
  2. Zoom
  3. Brushing & linking
  4. Highlighting
  5. Details-on-demand

Hover to view observations of how the user navigated the interface in the first usability study. User flow observations recorded by Season Dai.

Layout and visual refinements
After multiple iterations and usability studies, we found that our visualization was usable, but there were many refinements needed to improve interactivity and performance. In particular, as the lead designer, I made key decisions on:

  1. Minimal Color Palette: Initially, the colors were based off of the users' existing mental models of “red zones” for high values and “green zones” for low physiological values. However, with three visualizations in one screen, this results in visual clutter, conflicts, and oversaturation. The colors were recalibrated to reduce visual complexity why emphasizing the important values.
  2. Natural Layout: The layout was cleaned up as much as possible to reduce redundant legends and unclear relationships. Overall, the layout supports a top-to-bottom, left-to-right interaction flow.
  3. Player selection: We found that using images for the players was more recognizable than simple text-based checkboxes. We combined the player filter and player legend into one menu option to reduce complexity of the layout and aid in navigation.

A comparison of the changes between v1 (a) and v3 (b). V3 is the final interactive interface delivered to stakeholders after improvments on color, layout, and interactions.

Recommended Future Work
After a brief detour in d3, we ultimately decided to focus on delivering the final visualizations through the Tableau software. This is due to the nature of the partnership, the skills of our team, ands time-cost effectiveness. However, here is an exploration of how the visualization and interface might look, given enough time, resources, and skills.

A high-fidelity, early mockup of the interface.