North Shore Navigators Individual Pitching Report App
At the end of the 2024 NECBL season, I worked to create individual shiny apps for each pitcher on the North Shore Navigators, laden with usage-based statistics, dexterity-based statistics, location heat maps and plots, break charts, release point plots, and velocity and spin over time.
The interface of the app would then be posted on @NavigatorsData, in a 10-12 tweet thread with notes on their performance.
The app was created to provide a central location for information and reports on specific Navigators pitchers throughout the season, centralizing a plethora of data in one location.
The “Metrics/Results” tab shows data tables that display usage rates, pitch shape metrics, and statistics against each pitch type. On top, there is a section dedicated to cumulative season statistics, with the pitcher’s overall pitch total, plate appearances against, batted ball events and chase/whiff totals.
The second section is dedicated to pitch shape and release point data, with both average and max velocities for each pitch, spin rate, IVB, HB and the release height (RelZ), and Release Side (RelX). Release height is expressed in feet, and, regarding release side, any number in the positive indicates a righty, and a negative number indicates lefty.
Below that is the triple slash rates against each pitch type, as well as total lefty/righty splits. These numbers help to show how each pitch in a pitcher’s arsenal performed.
The “Movement/Release” tab displays both a break chart and a release point plot, color-coded by pitch type. Using ggplot, the break chart plots horizontal break on the x-axis and induced vertical break on the y-axis, with each point representing a pitch and color-coded by its type. The release plot is created with ggplot2, where the x-axis represents the horizontal release point, and the y-axis indicates the vertical release point or height. These plots create easily digestible reports to depict how pitches move, rather than just looking at numbers on a CSV. These plots depict every pitch that the pitcher threw over the course of the season, also depicting how changes in release point affect specific movement profiles.
The “Results by Split” tab shows data tables that display triple slash splits in all count based-situations (regarding plate appearances ending in said count), along with a more extensive breakdown of the bottom two tables from the first tab—this time displaying the splits against each pitch type from both dexterities.
These two tables display summary statistics showing how pitchers fared based on all count situations, and, how their pitches fared against both dexterities, which can assist in arsenal optimization and usage.
The “Locations” tab displays three location plots: one with all pitches, and then one per each dexterity. While I already added a heat map for each pitch, this allows the user to visualize location trends based on dexterity of the batter.
Each pitch is plotted on the charts, with color-coded dots to symbolize an individual pitch. This can be more visually understandable than a heat map if the user isn’t keen on how to read one. These three were also created using ggplot.
The “Heat Maps” tab displays location-based heat maps for each pitch type. The plot is built using ggplot and show the concentration of pitch locations for each pitch type. I added a 2D density plot layer to show the pitch concentration, with a gradient ranging from blue (low concentration of total pitches) to red (higher concentration), creating a heat map effect.
The “Velocity/Stuff” tab displays pitch-to-pitch velocity and spin rate numbers over the course of the season (chronologically by total pitch number), and, allows the user to pick up on velocity/spin gains or losses over the course of the entire season. Looking through these charts allows the pitchers and coaches to look back at their progression, or see how specific mechanical changes affected their performance.