Carolina hoops over the past five decadesPerformance across the ACC, NCAA Tournament, and overall win percentage.
ACC Championships
NCAA Tournament
Win % W-L
Over time
Tournament Titles
Regular Season
Final Fours # of times
Titles # of titles
1980s
3
6
2
0.817
281-63
1990s
4
2
5
0.776
270-78
2000s
2
5
4
0.728
251-94
2010s
1
5
2
0.743
277-96
2020s
0
1
1
0.639
133-75
Over time column shows win percentage by season throughout the decade (dashed line indicates a .700 win percentage).
Decades include the season's final year (i.e. 2019-20 is part of the 2020s)
Table by Chris at Bless your Chart | data via sports-reference.com | April 4, 2025
Continuity plot
Code
cont_plot <- cont_data |> dplyr::filter(Metric =="Continuity (minutes)") |> ggplot2::ggplot(ggplot2::aes(x = season, y = Value, color = Metric)) + ggplot2::geom_smooth(method ="loess", se =FALSE, span =0.35) + ggplot2::geom_vline(xintercept =2021.5, linetype ="dotted", color ="#333333", linewidth =0.5) + ggplot2::scale_color_manual(values =c("Continuity (minutes)"="#998ec3")) + hrbrthemes::theme_ipsum_rc() + ggplot2::labs(title ="The decline of continuity in college basketball",subtitle ="Shows the median Division I continuity of minutes since the 2010 season.",x ="Season",y ="",caption ="Data via kenpom.com | Viz by Chris at Bless your Chart" ) + ggplot2::scale_y_continuous(limits =c(30, 55), breaks =seq(30, 55, 5)) + ggplot2::theme(legend.position ="none") + ggplot2::annotate(geom ="label",x =2024,y =52.5,color ="#333333",fill ="floralwhite",label ="Transfer without \npenalty",size =3.5,fontface ='bold',family ='Roboto condensed' ) + ggplot2::annotate(geom ="curve",color ="#333333",x =2022.9,y =52.2,xend =2021.6,yend =48.5,curvature = .5,linewidth =0.6,arrow = ggplot2::arrow(length = ggplot2::unit(2, "mm")) ) + ggplot2::annotate(geom ="text",x =2025,y =33.4,color ="#333333",label ="33.7",size =4,fontface ='bold',family ='Roboto condensed' ) + ggplot2::annotate(geom ="text",x =2010,y =53.9,color ="#333333",label ="53.1",size =4,fontface ='bold',family ='Roboto condensed' )ggplot2::ggsave("cont_plot.png", cont_plot,w =7.5,h =6.5,dpi =600,bg ="white",type ='cairo')cont_plot
Mid-range plot
Code
mr_plot <- shot_profile |> dplyr::filter(season >2014) |> tidyr::pivot_longer(cols =c(mid_two_rate, three_rate), names_to ="shot_type", values_to ="rate") |> ggplot2::ggplot(ggplot2::aes(x = season, y = rate, color = shot_type,linetype = shot_type)) + ggplot2::geom_smooth(method ="loess", se =FALSE, linewidth =1.5) + ggplot2::scale_color_manual(values =c("mid_two_rate"="#7fbf7b", "three_rate"="#af8dc3")) + ggplot2::scale_linetype_manual(values =c("mid_two_rate"="dashed", "three_rate"="solid")) + ggplot2::labs(title ="Shot Selection Trends Over Time",x ="",y ="",color ="Shot Type") + hrbrthemes::theme_ipsum_rc() + ggplot2::labs(title ="The change in shot profiles over the last decade of college hoops",subtitle ="A comparison of three-point attempt rate and mid-range two-point rate.",x ="",y ="",caption ="Data via bartorvik.com | Viz by Chris at Bless your Chart" ) + ggplot2::scale_x_continuous(limits =c(2015, 2025), breaks =seq(2015, 2025, 1)) + ggplot2::scale_y_continuous(limits =c(0.30, 0.50), breaks =seq(0.30, 0.50, 0.05),labels = scales::percent_format(accuracy =1) ) + ggplot2::theme(legend.position ="none") + ggplot2::annotate(geom ="label",x =2016.5,y = .32,color ="#333333",fill ="#af8dc3",label ="Percentage of all shots \nfrom 3PT land",size =4,fontface ='bold',family ='Roboto condensed',alpha =0.6 ) + ggplot2::annotate(geom ="label",x =2016.5,y = .48,color ="#333333",fill ="#7fbf7b",label ="Percentage of 2PT shots \nfrom mid-range",size =4,fontface ='bold',family ='Roboto condensed',alpha =0.6 ) + ggplot2::annotate(geom ="label",x =2022.6,y = .48,color ="#333333",fill ="floralwhite",label ="2025 season \n3PT attempt rate \nsurpasses the 2PT \nmid-range rate",size =4,fontface ='bold',family ='Roboto condensed' ) + ggplot2::annotate(geom ="curve",color ="#af8dc3",x =2023.7,y = .48,xend =2025,yend = .395,curvature =-.5,linewidth =0.8,arrow = ggplot2::arrow(length = ggplot2::unit(2, "mm")) ) + ggplot2::geom_vline(xintercept =2024.7, linetype ="dotted", color ="gray50", linewidth =1)ggplot2::ggsave("mr_plot.png", mr_plot,w =8.5,h =7,dpi =600,bg ="white",type ='cairo')mr_plot