(Tidy Tuesday is a project to supply weekly data sets for R users to practice their coding skills on. You can find full details here.)
I turned to my wife in the car the other day and said, out of nowhere: “You know, I love a bit of sax in a song.”
She laughed.
But I was deadly serious.
Coincedentally, while looking through the Tidy Tuesday archives for some data to play around with in R after not using the language for a while, I found the Billboard Hot 100 Number Ones data set. And it contains a flag for “…if the song contains a saxophone”.
Hell yeah.
Which in turn got me wondering, which year had the most sax in it?

Sadly, since my birth in 1987, only 11 years in total have even had a sax-song go to number 1. And since I was old enough to meaningfully care, i.e. 1994, only 5 years had a sax-tastic hit. What are we even doing as a society? I say the AI can take us, for truly we lost our souls decades ago.
Two songs in particular though hold down the fort - Whitney Houston’s “I Will Always Love You” in 1992, with a whopping 14 weeks at no. 1, pushing 1992 to the highest scoring year (31%) with the assistance of The Heights’ “How Do You Talk To An Angel”. 1 Then, in 2015, Bruno Mars’ “Uptown Funk” was a shining reprieve in the darkness and also achieved 14 weeks at no. 1, but sadly struggled on alone, leaving 2015 at only 27% saxy.
Code (also on GitHub):
library(tidyverse)
library(ggtext)
library(tidytuesdayR)
library(tinieR)
# importing data
data <- tidytuesdayR::tt_load('2025-08-26')
songs <- data$billboard
# data manip
sax_songs <- songs |>
filter(saxophone == 1) |>
separate(cdr_genre, into = c("main_genre", "other_genres"), sep = ";", fill = "right") |>
replace_na(list(main_genre = "Rock")) |>
separate(date, c("year", "month", "day"), sep = "-", remove = FALSE) |>
select(year, weeks_at_number_one, main_genre) |>
group_by(year) |>
summarise(perc_of_year = (sum(weeks_at_number_one)/52)) |>
ungroup() |>
mutate(year = as.Date(paste(year, "01", "01", sep = "-")))
# plot
sax_songs |>
ggplot(aes(year, perc_of_year)) +
geom_point(colour = "#E03135", size = 2) +
scale_y_continuous(labels=scales::percent) +
scale_x_date(date_breaks = "10 year", date_labels = "%Y", expand = expansion(add = 0)) +
xlim(c(as.Date("1959-01-01"), as.Date("2023-01-01"))) +
theme(legend.position = "none",
axis.text.x = element_text(face = "bold", colour = "#4D556B"),
axis.text.y = element_text(face = "bold", colour = "#4D556B"),
axis.title.y = element_text(face = "bold", colour = "#4D556B"),
#axis.ticks.y = element_blank(),
axis.line = element_line(colour = "#4D556B"),
#panel.border = element_rect(color = "black", fill = NA),
panel.grid = element_blank(),
panel.grid.major.y = element_line(size = 0.3, colour = "black", linetype = 3),
#plot.title.position = "plot",
plot.title = element_textbox(face = "bold", colour = "#AE030E", size = 14),
plot.background = element_rect(fill = "#FFF8E7"),
panel.background = element_rect(fill = "#FFF8E7"),
plot.margin = margin(20,20,20,20),
plot.subtitle = element_textbox(face = "bold"),
plot.caption = element_textbox(face = "italic", colour = "#4D556B")) +
labs(x = "", y = "% of Year",
title = "Percentage of each year where the Billboard No. 1 song <br> prominently contained a saxophone",
subtitle = "",
caption = "% calculated as total no. 1 weeks in year / 52") +
annotate("segment", x = as.Date('2015-01-01'), y = 0.24, xend = as.Date('2015-01-01'), yend = 0.26, arrow = arrow(type = "closed", length = unit(0.01, "npc"))) +
annotate("text", x=as.Date('2015-01-01'),y=0.24, label = "Uptown Funk", color = "#185AA6", angle = 0, hjust = 0.5, vjust = 1.5, size = 3, fontface = "bold") +
annotate("segment", x = as.Date('1992-01-01'), y = 0.28, xend = as.Date('1992-01-01'), yend = 0.3, arrow = arrow(type = "closed", length = unit(0.01, "npc"))) +
annotate("text", x=as.Date('1992-01-01'),y=0.28, label = "I Will Always Love You", color = "#185AA6", angle = 0, hjust = 0.5, vjust = 1.5, size = 3, fontface = "bold")
-
You know. The Heights. Angel talking song. 2 weeks at no. 1 in 1992. We all know it. ↩︎