Dashboard Week Day 4 & 5: Who Wins the Race to the Ball?

Today's challenge for Dashboard Week was to tackle the NFL Big Data Bowl 2026 Analytics Track. The goal was to create a metric or visual analysis evaluating player movement during pass plays, specifically from when the quarterback releases the ball until the play ends in a way that's useful to coaches and understandable to fans.

Day 1 Plan

9:45 - 11:30 → Understand all Requirements and Data Exploration
11:30 - 12:00 → Inspiration on Tableau Public
12:00 - 12:30 → Sketch
12:30 - 1:30 → Lunch
1:30 - 5:00 → Data Prep in Tableau Prep

Spoiler alert: I did not follow this plan whatsoever.

Day 1: The Reality

I started by taking as much time as possible to make a plan. I thought, "if the task was supposed to be done over two days, there's probably a good reason why."

It was a large scope with lots of data, so I started with data discovery to work out what route I was going to take. Along the line, I realized I didn't know anything about American Football. At all. So I went ahead and watched a quick YouTube video on the basics, which heavily helped my understanding of the data. Turns out knowing what a quarterback does is quite useful when analyzing quarterback data.

I then looked through Tableau Public to see any similar topics to draw inspiration from. After exploring the data structure and understanding what was actually possible, I decided what I wanted the dashboard to contain: essentially 3 charts at the top and a football field map at the bottom showing the movement of players during a play. I wasn't focusing on the layout too much as of yet because i expected to receive further inspiration as i started building

I didn't finish the sketch until the end of the day because, if I'm being honest, I felt slightly unmotivated due to the fact that it was the end of training. But once I got the sketch done, my next goal was to shape the data in the form that would be required to build the charts. As the brief mentioned, I did this in Tableau Prep.

The data contained stats, facts, and metrics over 18 NFL game weeks, but with the aim of reducing scope, I solely focused on 1 game week.

The Data Challenge

The NFL Big Data Bowl dataset was split across three files:

  1. Input data - Player positions, speeds, and metadata before the QB throws the ball
  2. Output data - Frame-by-frame x/y coordinates showing player movement after the throw
  3. Supplementary data - Play context like coverage types, routes, results, and outcomes

The tricky part? Input and output files had completely different structures. Input had all the player information but limited frames; output had 10-20 frames of movement but no player names or speeds.

My solution in Tableau Prep was to create two separate tables:

  • Table 1: Unioned the input and output tracking data (I added 1000 to output frame IDs so I could tell pre-throw from post-throw frames)
  • Table 2: All the player metadata and play context

I then related these in Tableau Desktop on game_id, play_id, and nfl_id. This let player information flow through to all the animation frames while keeping the data structure manageable.

Day 2: Just Build It

I'm ashamed to admit that there was not much of a detailed plan for Day 2 except for "build dashboard," and that is what I did.

The dashboard is intended for a football coach who wants to better inform his quarterback on the right passes to make by analyzing three key questions:

  1. Who's the best player to pass to? - Ranking receivers by how much separation time they create vs defenders
  2. Which defenders are elite at closing down receivers? - Identifying fast defenders the QB should avoid throwing near
  3. What coverage type should you exploit? - Comparing whether the opponent struggles more with Man-to-man or Zone coverage

The Core Metric: Time to Arrival

The concept is simple: when the QB releases the ball, it takes 2-3 seconds to reach the catch point. In those seconds, receivers and defenders are racing to get there first. Whoever wins this race usually determines if the play succeeds.

First, I needed to calculate how far each player was from the catch point at every frame:

Distance to Catch Point = √((x - ball_land_x)² + (y - ball_land_y)²)

This is just the Pythagorean theorem calculating the straight-line distance between where the player currently is (x, y) and where the ball will land (ball_land_x, ball_land_y). Both measured in yards on the football field.

Then, using each player's speed (in yards per second), I calculated:

Time to Arrival = Distance to Catch Point / Player Speed

This tells you, in seconds, when each player will reach where the ball will land.

From this, I could calculate:

  • Receiver Time Advantage - How many seconds ahead of the nearest defender is the receiver?
  • Defender Closing Gap - How far behind (or ahead) is each defender compared to the receiver?

A receiver with +0.6 seconds of advantage? That's a high-probability completion. A receiver with -0.2 seconds (defender arrives first)? That's likely an incompletion or interception.

The Animated Field

The centerpiece of the dashboard is an animated football field showing player movement frame-by-frame.

I made an image of an NFL field and used that as a map background to visualize the movement of the players. Each player is represented by a colored dot:

  • 🔵 Blue = Offense
  • 🔴 Red = Defense
  • 🟡 Gold = Target Receiver

Using Tableau's Pages shelf, you can press play and watch the players move toward the catch point. As the animation plays, the metrics update in real-time showing distance to catch and time to arrival for each player.

The Three Charts

Chart 1: Best Receivers (colored by average time advantage)
Shows which receivers consistently create the most separation. The longer the bar, the more time advantage that receiver gains over defenders. This tells coaches who to target in critical situations.

Chart 2: Opponent weak points
Ranks defenders by how poorly they close down receivers. Informs the coach and players on what players they need to exploit.

Chart 3: Coverage Vulnerabilities (shows receiver advantage by coverage type)
Compares Man-to-man vs Zone coverage to see which scheme the opponent struggles with most. A reference line shows league average, so you can see if this defense is worse than typical at defending a particular coverage.

This is where I got to at the end of Day 2

The dashboard works, but there's definitely room for polish. If I had more time, I would add:

  • Movement trails showing the path players took
  • Speed indicator arrows showing direction and velocity
  • Team logos as custom shapes instead of simple colored dots
  • More sophisticated speed calculations (currently assumes constant speed, but players accelerate and decelerate)
  • An icon for the ball
  • Distance rings around the catch point (at 5, 10, and 15 yards) help visualize who's entering the "catch radius" where they can make a play on the ball,
Author:
Ayo Popoola
Powered by The Information Lab
1st Floor, 25 Watling Street, London, EC4M 9BR
Subscribe
to our Newsletter
Get the lastest news about The Data School and application tips
Subscribe now
© 2025 The Information Lab