The Geography of FRC Teams

By So Hirota

FRC (FIRST Robotics Competition) is an annual high school robotics competition that thousands of teams across the globe participate in. As an FRC participant and alum, I was always curious what determined if a team was "strong". In this data visualization, we'll explore this question from the πŸ”Ž lens of geography πŸ•΅οΈ.

"Strong Teams" By US Region: Midwest Dominance❓

Let's start with a simple bar chart. I'll define a "strong team" as a US based team that has won at least one regional, district, championship division, or championship event between 1998 to 2023. I'm using this as a reference for US regional boundaries.

Okay, that's a bar graph. But let's sort it to make it easier to interpret!

That's better! We can see that the Midwest has the most "strong teams", followed by Northeast, South, then West (California noo 😐). But could this be because the Midwest simply has more teams? Click "Normalize!" to normalize by the number of teams in each region that have competed at least once.

After normalization, this bar chart represents the proportion of strong teams in that region. Now we see that the Northeast region is stronger than the Midwest. The South and the West also switched places (go Californiaaa 🫑)! It is interesting to observe that between the Northeast and the South, there is a 10% difference in proportion of "strong teams".

"Strong Teams" by State: Michigan For the WinπŸ«…

So we got an interesting result that the Midwest and the Northeast are generally the "strongest" when it comes to FRC. Regions are pretty broad though, so let's examine the number of strong teams by each state to get more granularity. For this, I'll use a "choropleth" visualization. πŸ—ΊοΈ


Try hovering over a state you're interested in. It'll show you the number of strong teams in that state and in that region. The bluer the state is, the higher the number of "strong teams".

Looking at this map, one thing strikes me; Michigan is really strong, with 310 teams! This is more than double as many of California, which is in second place. Major population centers (ie California, New York, Texas) seem to have lots of strong teams as well, so Michigan is a very obvious outlier here. I recently learned that Michigan is where FRC started, so this makes sense!πŸ’‘

Alliances and Geography: A Tale of Southern Betrayal πŸ₯·

Let's now shift our focus to alliances. Specifically, let's explore if teams have a preference for teams from the same region when selecting alliances in championship divisions (Newton, Curie, etc).
This is a force-directed network graph. It's "force-directed" because each link (alliance relationship) acts like a spring, forcing the nodes (teams) to spread out organically.

This looks cool, but there's too much going on (and laggy, I know)! Click the buttons below to isolate the regions. Intra-regional alliances will be highlighted red, while inter-regional alliances will be highlighted blue.
Note: Intra-regional = within the same region

If you're interested in searching for a specific team, check out the search box below too!

We can now see the association within Southern teams are weak; that is, not many southern teams have chose to be on the same alliance as other southern teams. We can see this because southern teams do not have many red connections, but do have many blue ones. Conversely, Midwest has a lot of intra-regional alliances, as seen by the large number of red connections. This might be due to the fact there are more Midwest teams, but it could also mean that Midwest teams usually prefer to team up with Midwest teams. Perhaps, if given an option to team up with a team from the same region, teams will prefer to do so?

Sidenote: How does this all work? πŸ§™β€β™€οΈ (It's not magic)

The Code πŸ’»

I used pure javascript (no frameworks) alongside a powerful library called d3.js. D3 (Data Driven Documents) is what allows the smooth transition with beautiful animations. It also handles dynamic scaling, like when you clicked "Normalize" in the first viz. All the nitty gritty simulation stuff for the node-link diagram is handsomely handled by D3 as well.

The Data πŸ“Š

I used the FRC API as well as The Blue Alliance API to pull pertinent FRC data. Both are free to access with no rate limits. I interfaced with the API using Python in a Jupyter notebook. I used Python for cleaning and formatting the data as well. After that, I used D3's built in rollup (group by operation) and filter function to perform various aggregations from within the JS scripts.

All of my javascript code is hosted here on Github.

Lastly...πŸ”­

I hope you enjoyed these visualizations! If you discover any bugs, want to provide suggestions, or just want to get in touch, my email is hirotaso92602 at gmail dot com. Thanks!
θͺ­γ‚“γ§γγ‚Œγ¦γ‚γ‚ŠγŒγ¨γ†οΌπŸ˜‡