TT19 - 2024: Rolling Stone Album Rankings

tidytuesday
Autor/a

Benjamín Adasme Jara

Fecha de publicación

7 de mayo de 2024

El desafío Tidy Tuesday del 7 de mayo de 2024 trae los datos del ranking de los 500 mejores discos de todos los tiempos elaborada por la revista Rolling Stones en tres ocasiones diferentes: 2003, 2012 y 2020. Aquí quisimos comparar los 10 que estuvieron en la cima en cada lista. ¿Qué discos fueron considerados los mejores? La respuesta es que en las dos listas iniciales estos no cambiaron, pero en 2020 la percepción de los 10 mejores tuvo cambios radicales.

Resultado

Código

Cargamos librerías y datos

pacman::p_load(tidytuesdayR, 
               tidyverse, 
               ggbump, 
               paletteer, 
               ggtext,
               showtext)

l1 <- tt_load("2024-05-07")
---- Compiling #TidyTuesday Information for 2024-05-07 ----
--- There is 1 file available ---


── Downloading files ───────────────────────────────────────────────────────────

  1 of 1: "rolling_stone.csv"
rolling_stone <- l1[["rolling_stone"]]

head(rolling_stone)
# A tibble: 6 × 21
  sort_name      clean_name     album rank_2003 rank_2012 rank_2020 differential
  <chr>          <chr>          <chr>     <dbl>     <dbl>     <dbl>        <dbl>
1 Sinatra, Frank Frank Sinatra  In t…       100       101       282         -182
2 Diddley, Bo    Bo Diddley     Bo D…       214       216       455         -241
3 Presley, Elvis Elvis Presley  Elvi…        55        56       332         -277
4 Sinatra, Frank Frank Sinatra  Song…       306       308        NA         -195
5 Little Richard Little Richard Here…        50        50       227         -177
6 Beyonce        Beyonce        Lemo…        NA        NA        32          469
# ℹ 14 more variables: release_year <dbl>, genre <chr>, type <chr>,
#   weeks_on_billboard <dbl>, peak_billboard_position <dbl>,
#   spotify_popularity <dbl>, spotify_url <chr>, artist_member_count <dbl>,
#   artist_gender <chr>, artist_birth_year_sum <dbl>,
#   debut_album_release_year <dbl>, ave_age_at_top_500 <dbl>,
#   years_between <dbl>, album_id <chr>

Definimos una paleta de colores con el paquete paletteer y la modificamos a nuestro gusto.

my_colors <- paletteer_d("ggthemes::Tableau_20")

my_colors[13] <- "#7375B5"
my_colors[14] <- "#9C9EDE"

Cargamos las fuentes que usaremos en el gráfico.

font_add_google("Open Sans", "opensans")
font_add_google("Raleway", "raleway")
font_add_google("Inter", "inter")

showtext_auto()

Modificamos los datos, primero seleccionando solo aquellos que han estado en el top 10 en alguno de los años, y luego creado una etiqueta personalizada con la información disponible en el dataset.

top10 <- rolling_stone %>% 
  filter(rank_2003 %in% 1:10 | rank_2020 %in% 1:10) %>% 
  mutate(artist_album = str_wrap(str_glue("{clean_name}-{album}"), 30)) %>% 
  mutate(label = str_glue("{artist_album}\nPos. 2003: {rank_2003}\nPos. 2020: {rank_2020}")) %>% 
  pivot_longer(cols = 4:6, names_to = "año", values_to = "rank") %>% 
  mutate(año = as.numeric(str_remove_all(año, "rank_")),
         label_2 = if_else(año == 2003, label, NA),
         label = if_else(año == 2020, label, NA))

head(top10)
# A tibble: 6 × 23
  sort_name  clean_name  album             differential release_year genre type 
  <chr>      <chr>       <chr>                    <dbl>        <dbl> <chr> <chr>
1 Dylan, Bob Bob Dylan   Highway 61 Revis…          -14         1965 Coun… Stud…
2 Dylan, Bob Bob Dylan   Highway 61 Revis…          -14         1965 Coun… Stud…
3 Dylan, Bob Bob Dylan   Highway 61 Revis…          -14         1965 Coun… Stud…
4 Beatles    The Beatles Rubber Soul                -30         1965 <NA>  Stud…
5 Beatles    The Beatles Rubber Soul                -30         1965 <NA>  Stud…
6 Beatles    The Beatles Rubber Soul                -30         1965 <NA>  Stud…
# ℹ 16 more variables: weeks_on_billboard <dbl>, peak_billboard_position <dbl>,
#   spotify_popularity <dbl>, spotify_url <chr>, artist_member_count <dbl>,
#   artist_gender <chr>, artist_birth_year_sum <dbl>,
#   debut_album_release_year <dbl>, ave_age_at_top_500 <dbl>,
#   years_between <dbl>, album_id <chr>, artist_album <chr>, label <glue>,
#   año <dbl>, rank <dbl>, label_2 <glue>

Pasamos la data a ggplot2 para hacer la magia. Aquí decidimos usar un “bump chart” que es muy útil para expresar cambios en orden o ranking a través del tiempo.

top10 %>% 
  ggplot(aes(x = año, y = rank, color = album)) +
  geom_bump(size = 1) +
  geom_point(size = 3) +
  geom_text(aes(label = label, x = año + 2), size = 3.5) +
  geom_text(aes(label = label_2, x = año - 1.5), size = 3.5) +
  scale_x_continuous(breaks = c(2003, 2012, 2020)) +
  scale_y_reverse(breaks = 10:1) +
  scale_color_manual(values = my_colors) +
  coord_cartesian(ylim = c(10,1), xlim = c(2000,2023),
                  clip = "off") +
  labs(title = "El nuevo top 10 en el ranking de los 500 mejores álbumes de Rolling Stone",
       subtitle = "Del top 10 de 2003 solo dos discos se mantuvieron en el grupo en 2020",
       x = NULL,
       y = NULL,
       caption = "Benjamín Adasme Jara - Data de TidyTuesday 07/05/2024. X: @AdasmeBenja") +
  theme_minimal() +
  theme(legend.position = "none",
        plot.background = element_rect(fill = "gray10"), 
        panel.grid = element_blank(),
        axis.text = element_text(color = "white", size = 12),
        plot.title = element_text(colour = "white", family = "opensans", face = "bold", size = 16),
        plot.subtitle = element_text(colour = "white", family = "raleway", size = 12),
        plot.caption = element_text(color = "white", hjust = 0)) 
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
ℹ Please use `linewidth` instead.
Warning: Removed 36 rows containing missing values or values outside the scale range
(`geom_text()`).
Removed 36 rows containing missing values or values outside the scale range
(`geom_text()`).

Guardamos el gráfico para exportar y compartir.

ggsave(
  "2024-w19-rolling1.jpg",
  last_plot(),
  units = "px",
  width = 1400,
  height = 800
)