Top T20 Cricket International Bowlers

Author

Joe McCune

Getting the Data

library(tidyverse) 
library(scales)
library(cricketdata)

This is how I scraped the data, and then saved it. It can take repeated attempts and considerable time to finish this process.

crick_bowlers <- fetch_cricinfo("t20", "men", "bowling", "career", country = NULL)
all_bowlers <- saveRDS(crick_bowlers, "all_bowlers")

The saved data can be used to extract the data on the ten bowlers who have taken the most wickets in their international T20 careers.

t20_bowlers <- readRDS("all_bowlers") 
top_bowlers <- t20_bowlers |> dplyr::slice_max(order_by = Wickets, n = 10) 
top_bowlers$Country[top_bowlers$Country == "BAN"] <- "Bangladesh"
top_bowlers$Player[top_bowlers$Player == "Rashid Khan (AFG/ICC)"] <- "Rashid Khan"
top_bowlers$Country[is.na(top_bowlers$Country)] <- "Afghanistan"
# Country and player names have been corrected 

Top Ten Bowlers: Career Totals

Figure 1 shows the simple story of who took the most wickets. The columns are color coded by the countries of the respective batters.

ggplot(top_bowlers, aes(x = fct_reorder(Player, Wickets), y = Wickets)) +
  geom_col(aes(fill = Country)) +
  scale_x_discrete(labels = label_wrap(2)) +
  labs(title = "Top Ten T20 International Bowlers", x = "Bowlers", y = "Wickets Taken", caption = "Source: ESPNcricinfo")
Figure 1

Top Ten Bowlers: Career Progress

Figure 2 shows wickets taken in proportion to the total number of overs bowled. This gives us an idea of progress each has made when compared to the length of their career.

ggplot(top_bowlers, aes(x = Overs, y = Wickets, label = Player)) +
  geom_point() + geom_text(hjust=0.50, vjust=-0.5) +
  xlim(275, 475) +
  ylim(120, 165) +
  # Axes have been extended to make it easier for prevent the player names from being "cut off"
  labs(title = "Top Bowlers: Career Progress", x = "Overs Bowled", y = "Wickets Taken", caption = "Source: ESPNcricinfo")
Figure 2

Top Ten Bowlers: Strike Rate

Figure 3 shows each bowler’s strike rate in proportion to total overs bowled.

The Strike Rate is calculated differently for bowlers than for batters. It measures how quickly they take wickets, calculated as the average number of balls bowled per wicket taken. So, the lower, the better. That is why the Y axis “Strike Rate” been reversed- lower rates display higher in this plot.

ggplot(top_bowlers, aes(x = Wickets, y = StrikeRate, label = Player)) +
  geom_point() + scale_y_reverse() + 
  # The lower the number, the better.  That is why the Y axis is reversed.
  geom_text(hjust=0.25, vjust=-0.5) +
  xlim(120, 170) +
  # X axis has been extended to make it easier for prevent the player names from being "cut off"
  labs(title = "Top Bowlers: Strike Rates", x = "Wickets Taken", y = "Strike Rates", caption = "Source: ESPNcricinfo")
Figure 3

Top Ten Bowlers: Economy Rate

Figure 4 shows each bowler’s economy rate in proportion to wickets taken.

The economy rate measures how many runs they concede per over, indicating their efficiency in limiting the opposition’s scoring. So, once again, lower is better. That is why the Y axis “Economy Rate” been reversed- lower rates display higher in this plot.

ggplot(top_bowlers, aes(x = Wickets, y = Economy, label = Player)) +
  geom_point() + scale_y_reverse() + 
  # The lower the number, the better.  That is why the Y axis is reversed.
  geom_text(hjust=0.40, vjust=-0.5) +
  xlim(120, 170) +
  labs(title = "Top Bowlers: Economy Rates", x = "Wickets Taken", y = "Economy Rates", caption = "Source: ESPNcricinfo") 
Figure 4

Rashid Khan’s exceptional Strike Rate and Economy show that he is poised to surpass others who have played for longer