Elevating Fastballs in MLB

In Major League Baseball, there has been an emphasis on throwing fastballs up in the zone recently to get outs. This can be contradictory to historical baseball knowledge which teaches that pitchers should locate down in the zone. So why are MLB pitchers throwing up in the zone?

Well, the answer is very complex like any phenomena in sports. MLB hitters are the best hitters in the world because they can hit good pitching. If good pitching is locating down in the zone, then the best hitters are going to make adjustments to hit balls that are located down in the zone.

We have seen a recent surge in talk about swing plane and ball exit angle. Hitters are always tinkering and trying to find new ways to be successful. Hitters who are swinging more upward than in the past are hitting for more power. This MLB season we are on track to see about 500 more homeruns than last year.

Just as hitters have adjusted their swing plane to hit for more power they have become incredibly good at hitting the low pitch. Pitchers and pitching staffs are realizing that elite hitters have adjusted to hitting low pitches and are mixing in more high fastballs to get outs.

Lets start by looking at the earned run averages in the MLB.

Team Standard Pitching Table
Team ERA
LAD 3.20
ARI 3.39
BOS 3.83
CLE 3.84
NYY 3.88
HOU 3.95
STL 4.00
CHC 4.06
LAA 4.11
WSN 4.14
TBR 4.15
MIL 4.19
TOR 4.29
KCR 4.29
PIT 4.30
LgAvg 4.34
TEX 4.38
CHW 4.38
COL 4.49
MIA 4.50
ATL 4.54
SEA 4.62
SFG 4.63
SDP 4.72
OAK 4.80
DET 4.81
NYM 4.83
PHI 4.85
MIN 4.86
BAL 5.08
CIN 5.23
Provided by Baseball-Reference.com: View Original Table
Generated 7/2/2017.
Next let’s take a look at the list of teams throwing fastballs up in the zone.
Team Pitches Total Pitches Pitches Up in Zone
BOS 3587 12390 28.95%
DET 2973 11981 24.81%
TB 3023 12497 24.19%
WSH 2932 12213 24.01%
MIN 2843 11946 23.80%
LAD 2849 12065 23.61%
CLE 2725 11595 23.50%
MIL 2942 12756 23.06%
NYM 2813 12617 22.30%
CHC 2717 12241 22.20%
TOR 2625 11882 22.09%
KC 2593 11870 21.84%
COL 2681 12297 21.80%
PHI 2532 11831 21.40%
SF 2618 12280 21.32%
CIN 2563 12042 21.28%
PIT 2507 11854 21.15%
CWS 2516 12050 20.88%
SEA 2407 11801 20.40%
STL 2412 11972 20.15%
MIA 2387 11987 19.91%
ARI 2379 12120 19.63%
NYY 2210 11615 19.03%
ATL 2180 11592 18.81%
OAK 2220 12130 18.30%
SD 2139 11793 18.14%
BAL 2314 12928 17.90%
LAA 2151 12253 17.55%
TEX 2078 12022 17.28%
HOU 2098 12196 17.20%

Looking at these two charts there are a few teams and ideas worth pointing out. The Boston Red Sox are leading all of MLB throwing about 29% of their fastballs up in the zone. They are also third in ERA and currently leading the AL East. The Los Angeles Dodgers are leading the MLB in ERA and are 6th in percentage of high fastballs thrown. They are also leading the NL West.

Just pointing out these teams and saying that they are successful because they throw high fastballs would not be the entire picture. The historical knowledge of throwing the baseball down in the zone is not just for no reason. Often, leaving the ball up and over the middle of the plate will not end in a desirable result.

Teams like the Houston Astros are being very successful throwing the ball down in the zone. The Houston Astros are throwing the least amount of fastballs up in the zone of any other team but are 6th in ERA. They are also leading the AL West with great help from their potent offense.

Elite hitters typically cannot cover all zones but can hit any zone well if they have an idea the pitch will be in that zone before it comes. This is why it is crucial to throw up in the zone in the right situation. For example, typically when the batter is down in the count early in the AB, say 0-2 or 1-2, they are trying to protect against all pitches. This makes it very difficult to reach a high velocity fastball up in the zone.

When the Boston Red Sox are inducing strikes by fastballs up in the zone, it is often when they are ahead in the count. Take a look at the chart below:


When I first made this chart I was not expecting there to be such a huge concentration of balls thrown up in the zone. I expected there to be more of an even spread around the edges of the strike zone. This map corroborates that the Boston Red Sox are throwing up in the zone a lot to induce strikes, especially when they are getting ahead in the count.

Let’s take a look at the Houston Astros map to see how they are inducing strikes with fastballs ahead in the count:


This is more what I would expect out of any team in the MLB. We have now seen the Boston Red Sox who are being very successful throwing balls up in the zone and the Houston Astros who are being successful getting strikes all over the zone.

Throwing up in the zone has been a hot topic and maybe hyped up too much by baseball analyst. I believe there are ways of still being successful locating pitches anywhere in the zone if it is in the right circumstance. Perhaps in a future blog I will try to find the best way to use fastballs up in the zone to get outs.

I generated these plots from baseballsavant.com‘s Statcast database search tool. Below is the R code I used to generate the heatmap plots.

## Strike zone heat map generator

## set up color palette
rf <- colorRampPalette(rev(brewer.pal(11,'Spectral')))
r <- rf(32)

## set up strike zone
strike_zone <- bind_cols(as.data.frame(c(-.95,-.95,.95)))
strike_zone <- bind_cols(strike_zone, as.data.frame(c(1.5,3.5,3.5)))
strike_zone2 <- bind_cols(as.data.frame(c(-.95,.95,.95)))
strike_zone2 <- bind_cols(strike_zone2, as.data.frame(c(1.5,1.5,3.5)))
names(strike_zone) <- c("x","z")
names(strike_zone2) <- c("x","z")

## plot x and z coordinates of pitches
p <- ggplot(df, aes(x, z))
h3 <- p + stat_bin2d(bins = 10) + scale_fill_gradientn(colours=r) +
geom_line(data = strike_zone, aes(x,z), size = 2) +
geom_line(data = strike_zone2, aes(x,z), size = 2) +
labs(title = "Houston Astros Fastball Strikes Ahead in the Count", y="Z", x = "X") +
theme(plot.title = element_text(hjust = 0.5,size = 12),
axis.title.x = element_text(size = 15),
axis.title.y = element_text(size=15,angle = 0,vjust = .5),
axis.text.x = element_text(size = 12),
axis.text.y = element_text(size=12))

2 thoughts on “Elevating Fastballs in MLB

  1. My spouse and I stumbled over here from a different page and thought I might as well check things out.
    I like what I see so now i’m following you.

    Look forward to exploring your web page again.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s