It was really cool to deep dive into current League of Legends (LoL) ranked data. One surprising result was how dominant Miss Fortune appears in lower ranks such as Bronze, Silver, Gold, and Platinum. Other champions like Teemo and Briar also play heavy roles in lower ranks, often outperforming expectations. My research question explores whether champions with higher pick rates have systematically different win rates than less‐picked champions.
Data was ethically scraped from OP.GG using a custom R script. I collected champion statistics across five ranked tiers: Bronze, Silver, Gold, Platinum, and Diamond. The dataset includes win rate, pick rate, ban rate, champion name, and tier.
# Create OP.GG rank order per tier
all_ranks_data <- all_ranks_data %>%
group_by(rank_tier) %>%
mutate(opgg_rank = row_number()) %>%
ungroup()
# Create high vs low pick groups
all_ranks_data <- all_ranks_data %>%
group_by(rank_tier) %>%
mutate(pick_group = ntile(pick_rate, 4)) %>%
mutate(pick_group = ifelse(pick_group == 4, "High Pick (Top 25%)",
ifelse(pick_group == 1, "Low Pick (Bottom 25%)", NA))) %>%
filter(!is.na(pick_group))
bronze_data <- all_ranks_data %>% filter(rank_tier == "bronze")
bronze_data %>% head(15)
## # A tibble: 15 × 7
## # Groups: rank_tier [1]
## opgg_rank champion rank_tier win_rate pick_rate ban_rate pick_group
## <int> <chr> <chr> <dbl> <dbl> <dbl> <chr>
## 1 1 Miss Fortune bronze 52.3 27.5 15.0 High Pick (Top …
## 2 2 Teemo bronze 54.2 2 24.4 Low Pick (Botto…
## 3 11 Morgana bronze 52.2 2.75 27.1 Low Pick (Botto…
## 4 12 Ziggs bronze 52.1 2.91 2.21 Low Pick (Botto…
## 5 19 Mel bronze 51.7 1.63 42.0 Low Pick (Botto…
## 6 20 Master Yi bronze 51.5 10.5 22.0 High Pick (Top …
## 7 22 Mordekaiser bronze 51.4 9.56 15.3 High Pick (Top …
## 8 24 Viego bronze 51.0 11.2 8.02 High Pick (Top …
## 9 25 Morgana bronze 50.8 11.1 27.9 High Pick (Top …
## 10 29 Mel bronze 50.2 10.2 47.2 High Pick (Top …
## 11 30 Yasuo bronze 50.2 11.0 20.6 High Pick (Top …
## 12 31 Lux bronze 50.0 17.2 24.1 High Pick (Top …
## 13 32 Jhin bronze 49.8 15.0 5.55 High Pick (Top …
## 14 33 Jinx bronze 49.6 15.8 6.26 High Pick (Top …
## 15 34 Ashe bronze 49.6 15.7 11.7 High Pick (Top …
This table shows the Bronze‐tier champion stats exactly as scraped from OP.GG. It gives a quick snapshot of which champions are most successful in low‐rank play and provides the foundation for later comparisons across the other tiers.
all_ranks_data %>% head(20)
## # A tibble: 20 × 7
## # Groups: rank_tier [1]
## opgg_rank champion rank_tier win_rate pick_rate ban_rate pick_group
## <int> <chr> <chr> <dbl> <dbl> <dbl> <chr>
## 1 1 Miss Fortune bronze 52.3 27.5 15.0 High Pick (Top …
## 2 2 Teemo bronze 54.2 2 24.4 Low Pick (Botto…
## 3 11 Morgana bronze 52.2 2.75 27.1 Low Pick (Botto…
## 4 12 Ziggs bronze 52.1 2.91 2.21 Low Pick (Botto…
## 5 19 Mel bronze 51.7 1.63 42.0 Low Pick (Botto…
## 6 20 Master Yi bronze 51.5 10.5 22.0 High Pick (Top …
## 7 22 Mordekaiser bronze 51.4 9.56 15.3 High Pick (Top …
## 8 24 Viego bronze 51.0 11.2 8.02 High Pick (Top …
## 9 25 Morgana bronze 50.8 11.1 27.9 High Pick (Top …
## 10 29 Mel bronze 50.2 10.2 47.2 High Pick (Top …
## 11 30 Yasuo bronze 50.2 11.0 20.6 High Pick (Top …
## 12 31 Lux bronze 50.0 17.2 24.1 High Pick (Top …
## 13 32 Jhin bronze 49.8 15.0 5.55 High Pick (Top …
## 14 33 Jinx bronze 49.6 15.8 6.26 High Pick (Top …
## 15 34 Ashe bronze 49.6 15.7 11.7 High Pick (Top …
## 16 35 Zaahen bronze 49.4 20.2 42.2 High Pick (Top …
## 17 36 Caitlyn bronze 48.8 19.7 23.4 High Pick (Top …
## 18 37 Rammus bronze 52.9 2.3 4.66 Low Pick (Botto…
## 19 38 Brand bronze 52.7 1.64 5.97 Low Pick (Botto…
## 20 39 Teemo bronze 52.7 1.7 24.1 Low Pick (Botto…
This table combines data for all five ranked tiers (Bronze → Diamond). It allows us to observe how champion performance shifts across the skill spectrum and enables comparisons that drive the analysis throughout the report.
top1 <- all_ranks_data %>%
group_by(rank_tier) %>%
slice_min(opgg_rank, n = 1) %>%
ungroup()
ggplot(top1, aes(x = rank_tier, y = win_rate, fill = rank_tier)) +
geom_col() +
geom_text(aes(label = champion), vjust = -0.5, fontface = "bold") +
labs(title = "Top Champion per Rank Tier (OP.GG)", y = "Win Rate (%)", x = "Rank Tier") +
theme_minimal()
This chart highlights the single highest‐ranked champion (according to OP.GG) within each rank tier. It summarizes which champions sit at the very top of their respective tiers, making it easy to see strong low-rank performers like Miss Fortune and other meta-defining picks across tiers.
top3 <- all_ranks_data %>%
group_by(rank_tier) %>%
slice_min(opgg_rank, n = 3) %>%
ungroup()
ggplot(top3, aes(x = -opgg_rank, y = champion, fill = rank_tier)) +
geom_col() +
facet_wrap(~rank_tier, scales = "free_y") +
labs(title = "Top 3 Champions by OP.GG Ranking", x = "Ranking (1 = Best)", y = "Champion") +
theme_minimal()
This visualization displays the top 3 champions for each rank tier based on OP.GG’s internal ranking system. Unlike win rate alone, OP.GG’s rank ordering incorporates multiple factors—pick rate, consistency, and statistical stability—making this a more holistic view of champion strength.
This chart is especially valuable because it reveals how tier‐specific the meta truly is: a champion that dominates Bronze may not be equally strong in Diamond.
Overall, this visual shows that champion strength is highly dependent on player skill level, and it highlights the champions that consistently perform well within each rank.
ggplot(all_ranks_data, aes(x = pick_group, y = win_rate, fill = pick_group)) +
geom_boxplot() +
labs(title = "Win Rate Comparison: High Pick vs Low Pick Champions", x = "Pick Group", y = "Win Rate (%)") +
theme_minimal()
This boxplot compares win rates between the top 25% most‐picked champions and the bottom 25% least‐picked champions. Surprisingly, low‐pick champions tend to have higher win rates, suggesting that many popular champions may be overplayed even when not statistically strong, while niche champions perform better but are chosen less frequently.
This finding supports the hypothesis that popularity does not always align with performance.
high <- all_ranks_data %>% filter(pick_group == "High Pick (Top 25%)") %>% pull(win_rate)
low <- all_ranks_data %>% filter(pick_group == "Low Pick (Bottom 25%)") %>% pull(win_rate)
t.test(high, low)
##
## Welch Two Sample t-test
##
## data: high and low
## t = -10.894, df = 117.77, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -1.931010 -1.336968
## sample estimates:
## mean of x mean of y
## 50.92215 52.55614
This analysis showed that: - Miss Fortune is a consistently strong performer in lower ranks across OP.GG. - Champions like Teemo and Briar also show strong win rate dominance in certain tiers, especially where their playstyle aligns well with lower-rank tendencies. - High-pick champions tend to have lower win rates than low-pick champions. - The t-test confirmed that win rates differ significantly between high- and low-picked champions.
Overall, scraping and analyzing OP.GG data provided interesting insights into champion performance and player behavior in ranked League of Legends. It was a fun and informative way to explore the LoL ranked ecosystem through real-world data.