College Football Playoffs: Average Margin of Victory by Round
Shows the average margin of victory by each round in the CFP Era.
Round
2025 12 teams
2024 12 teams
2023 4 teams
2022 4 teams
2021 4 teams
2020 4 teams
2019 4 teams
2018 4 teams
2017 4 teams
2016 4 teams
2015 4 teams
2014 4 teams
1st Round
Semifinals
16.2
34-24 51-34 41-10 10-3
19.2
27-17 38-24 38-10 42-17
6.5
37-31 27-20
3.5
51-45 42-41
22
34-11 27-6
19
49-28 31-14
20.5
63-28 29-23
19
30-3 45-34
12
54-48 24-6
24
31-0 24-7
29
37-17 38-0
23
59-20 42-35
Quarterfinals
18.2
24-14 23-0 38-3 39-34
14.5
31-14 39-31 41-21 23-10
—
—
—
—
—
—
—
—
—
—
Semifinals
—
8.5
27-24 28-14
—
—
—
—
—
—
—
—
—
—
Championship
—
11
34-23
21
34-13
58
65-7
15
33-18
28
52-24
17
42-25
28
44-16
3
26-23
4
35-31
5
45-40
22
42-20
Data via Stathead | sports-reference.com | theme via {gtUtils}
Data for 2025 season through Quarterfinals Round of CFP Table by Chris at Bless your chart
Hoops beeswarm
Code
plot_data <- all_stats |> dplyr::filter( year >2021, lubridate::month(date) ==11| (lubridate::month(date) ==12& lubridate::day(date) <23) ) |> dplyr::mutate(margin =abs(pts - opp_pts),is_blowout = margin >29.5 )labels_data <- plot_data |> dplyr::group_by(year) |> dplyr::summarize(n_total = dplyr::n(),n_blowouts =sum(is_blowout),pct_blowout = (n_blowouts / n_total) *100,label_pos =max(plot_data$margin) +2,label_text =paste0( n_blowouts, " blowouts \n", n_total, " games\n","(", round(pct_blowout, 1), "% of games)" ) )bee_plot <- plot_data |> ggplot2::ggplot(ggplot2::aes(x =factor(year), y = margin, color = is_blowout)) + ggbeeswarm::geom_quasirandom(alpha =0.7, size =2, width =0.25) + ggplot2::geom_hline(yintercept =29.5, linetype ="dashed", color ="#333333", linewidth =0.8) + ggplot2::geom_label(data = labels_data, ggplot2::aes(x =factor(year), y = label_pos, label = label_text),inherit.aes =FALSE,fontface ="bold",color ="#333333",fill ="white",family ="mono",label.size =0,alpha =0.8,hjust =0 ) + ggplot2::scale_color_manual(values =c("FALSE"="#ffc9b5", "TRUE"="#FF6B35")) + ggplot2::scale_y_continuous(expand = ggplot2::expansion(mult =c(0.05, 0.2))) + ggplot2::labs(title ="College Basketball: Blowouts in early season games",subtitle ="Margin of victory in games played before December 23 of each season.\nBlowout defined by a margin of 30+ points.",x ="",y ="Margin of Victory",caption ="data via barttorvik.com \nViz by Chris at Bless your chart" ) + ggthemes::theme_few() + ggplot2::theme(text = ggplot2::element_text(family ="mono"), # Global font familyplot.title = ggplot2::element_text(color ="black", face ="bold"),legend.position ="none",panel.grid.minor = ggplot2::element_blank(),panel.grid.major.y = ggplot2::element_blank(),panel.grid.major.x = ggplot2::element_line(color ="#f0f0f0", linewidth =0.3) ) + ggplot2::coord_flip()ggplot2::ggsave("bee_plot.png", bee_plot,w =10.5,h =7.5,dpi =300,)bee_plot