Basketball Dashboard Graphic

NBA Advantages Dashboard

An important step of all data tools is the ability to grant access and training to its users. A custom, well-designed dashboard accessible in the cloud is one of the best ways to begin impactful analysis across an intended group.

Recently I designed some really nice visualizations in Tableau for use in analyzing the NBA and its teams. They feature unique perspectives and custom metrics that bridge what I've identified as being a gap between superficial data (i.e. box score) and advanced metrics (i.e. RAPTOR).

My ultimate goal is to deliver these tools using a robust data pipeline. With the metrics defined and visualizations designed, I turn my attention to access and delivery. Thanks to Tableau, we have a customizeable tool with cloud hosting.

I aim to put together the metrics and visualizations into a public, Tableau dashboard in the cloud for simple delivery and powerful transformation through the interface.


Learning

My previous experience with dashboard reporting has mostly been localized to the cloud BI tool Grow that I've implemented and supported at TETON Sports. While similar in the UI as a low-code data environment, Tableau is far more advanced.

I felt the quickest way to the end result and "hack" some of the learning curve would be to tap into the knowledge of the industry.

I found an excellent resource on creating dashboards in Tableau that not helped me setup the NBA Advantages Dashboard, but also inspired future project I'm interested in (stay tuned).

I was able to experiment with the settings and configuration after having distilled the basics from the video. It resulted in some pretty stunning dashboards, if I do say so myself. Let's take a look!


The Dashboards

While I didn't dive into every perspective and tool built upon the foundation of the "NBA eFG% Advantage" and "NBA Points/Possession Swing" metrics, I had approximately 7-10 resources that I wanted on a dashboard to give a comprehensive picture.

All of these tools could essentially be classified as a "league" tool (where isolating a single team yielded little value in comparison to a macro view of the league) or a "team" tool that afforded greater detail and inter-connections.

I decided to organize the dashboard into tabs of the aforementioned groups. Here's a look into each:


League Tab

Here's a demo of the "League Tab":

Demo of the League Advantages Tableau Dashboard

We see two visualizations focusing on the metrics mentioned above. Corresponding team colors and logos make the visualizations aesthetically appealing and there's a lot of power in the filters located on the right.

Users can pick from a slew of attributes that will dynamically transform the visualizations. Some of my favorite configurations are:


This league tool is very valuable to get a picture into who's performing against who and how.


Team Tab

Here's a demo of the "Team Tab":

Demo of the Team Advantages Tableau Dashboard

Here you'll see new tools and presentation, but they all still revolve around the core metrics we've been talking about. A similar set of filters are available here as well.

This is tool is very valuable as a first-look that may prompt use of the "League" tool to put certain data points into context while also being a second-look tool when needing additional info from observations made with the "League" tool.


Problem Solving


Dashboard Tabs

My first attempts to publish a dashboard only displayed an individual workbook sheet. This complicated matters since I wanted users to have access to both "League" and "Team" tabs.

I found the solution by selecting "Show All Sheets" in the Tableau Public page for the dashboard. Then it was a matter of hiding the sheets feeding the dashboard and I achieved the result I was looking for.

Displaying the Big Team Logo

An aesthetic I wanted to achieve was to display the team logo in the top-left corner of the "Team" tab when the respecting team acronym is selected from the filter. I search online and found odd solutions, often with including the file name in the original data set.

Given that Tableau allows us to relate custom shapes to column values, there had to be a simpler way.

From my data visualization experience with {ggplot2} in R, I implemented a solution by ploting a single observation at (0,0) in the cartesian plane and setting the shape to depend on the team in the filter. Removing all semblance of plot underneath the logo (stripping the axis, labels, grid, etc.) and depositing the plot into the dashboard and voila!



If you haven't checked out these dashboards yet, do so HERE

The next step in this project is to focus on automating the data extraction process into Tableau. This may prove tricky since the ideal solution involved Tableau Server, however, there should definitely be approaches to explore.