Taylor Swift

Un viaje por la vida artistica de la famosa cantante

trabajo BigData
Taylor Swift
Autorcito
Afiliación

Celeste Lupo (lumace@alumni.uv.es)

Fecha de Publicación

30 de diciembre de 2024

Resumen
En este trabajo volcaré toda la informacion posible sobre el recorrido de la cantante, sus canciones, sus albumes, su historia, y su hito mas reciente… el famoso ERAS TOUR.

Los paquetes que utilizaremos son los siguientes:

Código
library(tidyverse)
library(tidytext)
library(ggplot2)
library(wordcloud)
library(tmap) 
library(sf)
library(leaflet)
library(treemap)
library(wordcloud2)
library(leaflet)
library(sf)
library(htmlwidgets)
library(knitr)
library(kableExtra)
library(dplyr)
library(plotly)

Introducción

Taylor Swift es una de las artistas más influyentes de la música contemporánea. Desde sus inicios en el género country hasta convertirse en una estrella global del pop, Swift ha demostrado ser una figura versátil y visionaria. Este trabajo tiene como objetivo explorar su vida, su carrera, y el impacto que ha tenido en la música y la cultura global.

Reproductor de Spotify

Puedes escuchar una tranquila cancion de Taylor Swift mientras lees este trabajo:

Código
echo= FALSE

knitr::include_url("https://open.spotify.com/embed/track/4R2kfaDFhslZEMJqAFNpdd?utm_source=generator", height = "152")

Empezamos de la mano de Tay - Tay

VAMOS A EMPEZAR CON EL TRABAJO

Tay nos anima

Vamos a ver una variedad de cosas, desde un analisis de las letras de sus canciones, hasta las ubicaciones del famoso ERAS TOUR en todo el mundo… Asi que nos ponemos manos a la obra

….

Frecuencia de palabras

El gráfico que presento a continuación muestra la frecuencia de palabras en todas las canciones de Taylor Swift, sin distinción entre álbumes. Este análisis permite observar las palabras más recurrentes a lo largo de su carrera, proporcionando una visión global de los temas y las emociones que han sido clave en su música a lo largo de los años.

Primero un grafico que cuenta las 30 palabras mas frecuente entre todas sus canciones. Luego los visualizaremos de otras maneras

Ggplot

Código
lyrics <- rio::import(here::here("datos", "Lyrics.csv"))

lyrics_tidy <- lyrics %>%
  unnest_tokens(word, lyric) %>%   
  anti_join(stop_words) %>%        
  count(word, sort = TRUE) 

lyrics_tidy %>%
  top_n(30) %>%  # Seleccionamos las 20 palabras más frecuentes
  ggplot(aes(x = reorder(word, n), y = n)) +  # Reordenamos las palabras por frecuencia
  geom_bar(stat = "identity", fill = "#CC99BB") +  # Creamos las barras
  coord_flip() +  # Giramos las barras para mejorar la legibilidad
  labs(title = "Las 20 palabras más frecuentes en las letras de Taylor Swift",
       x = "Palabra",
       y = "Frecuencia") +
  theme_minimal() 


Treemap

Código

lyrics_p <- lyrics_tidy %>%
  rename(frecuencia = n) %>%      
  slice_max(order_by = frecuencia, n = 50) 

colors <- c("#bc4749", 
            "#9f86c0", 
            "#6a040f", 
            "#f72585", 
            "#4361ee", 
            "#C3B377", 
            "#8449BB", 
            "#bc6c25", 
            "#526D85",
            "#994914", 
            "#6f1d1b")

treemap_taylor <- treemap(lyrics_p,
                              index="word",
                              vSize= "frecuencia",
                              title="Palabras en las canciones de Taylor",
                              palette=colors,
                              border.col=c("white"), 
                              border.lwds=1 ,
                              fontface.labels=3,
                              bg.labels=c("transparent"),              
                              align.labels=c("center", "center"),                             
                              overlap.labels=0.5)


Nube de palabras

Este es un grafico interactivo, por lo que, al colocar el cursor encima de la palabras, nos dirá cuantas veces se repite.

Código


lyrics_tidy %>%
  slice_max(n, n = 100) %>%  # Seleccionamos las 100 palabras más frecuentes
  wordcloud2(size = 0.35, color = colors)

Album por album

Haremos una parada por los albumes especificos: Folklore, 1989 y Reputation, por la simple razon de que son mis favoritos, y en cada parada, veremos una imagen de Taylor interpretando dicho album durante el Eras Tour (en el que cambia su vestuario y escenografia en cada album, para entrar en diferentes atmosferas)

Los gráficos de frecuencia de palabras permiten visualizar estos patrones de forma clara. Al examinar las palabras más recurrentes, podemos detectar las diferencias entre las eras musicales de Taylor Swift y cómo su estilo lírico ha cambiado y madurado a lo largo de los años.

Folklore

Lanzado durante la pandemia, se adentra en un sonido más indie y alternativo, alejado del pop que había caracterizado sus álbumes anteriores. Explora temas de amor, nostalgia y narrativa ficticia. Ganó el premio Grammy a Álbum del Año en 2021.

Durante el Eras Tour, Taylor interpreta canciones de Folklore en un escenario inspirado en bosques encantados, destacando la atmósfera mágica del álbum.

Código
folklore <- lyrics %>% 
  filter(album_name == "folklore") 

folklore_p <- folklore %>%
  unnest_tokens(word, lyric) %>%   
  anti_join(stop_words) %>%        # Elimino las palabras vacías usando stop_words
  count(word, sort = TRUE) 



folklore_p %>%
  with(wordcloud(word, n, max.words = 100, colors = "#8B7765"))

  

1989

1989 es el álbum que consolidó a Taylor Swift como una superestrella global del pop. Inspirado en la música de los años 80. Este álbum fue un fenómeno cultural y ganó el Grammy a Álbum del Año en 2016. Su transición al pop fue respaldada por una producción impecable y letras que exploran temas de independencia, romance y autoafirmación. En el Eras Tour, Taylor revive la energía vibrante de 1989 con actuaciones llenas de luces brillantes y coreografías dinámicas.

Código
a1989 <- lyrics %>% 
  filter(album_name == "1989") 

p1989 <- a1989 %>%
  unnest_tokens(word, lyric) %>%   
  anti_join(stop_words) %>%        # Eliminamos las palabras vacías usando stop_words
  count(word, sort = TRUE)


p1989 %>%
  with(wordcloud(word, n, max.words = 100, colors = "#668B8B"))

Reputation

Reputation es un álbum que muestra a Taylor Swift explorando un lado más oscuro y audaz de su música. Este álbum aborda el concepto de redención y renacimiento en medio del escrutinio público. La producción es más electrónica y pesada, reflejando una era de empoderamiento. Durante el Eras Tour, sus actuaciones de Reputation son visualmente impactantes, con elementos de iluminación dramática y una energía desafiante.

Código
reputation <- lyrics %>% 
  filter(album_name == "reputation") 

reputation_p <- reputation %>%
  unnest_tokens(word, lyric) %>%   
  anti_join(stop_words) %>%        # Eliminamos las palabras vacías usando stop_words
  count(word, sort = TRUE)
  

reputation_p %>%
  with(wordcloud(word, n, max.words = 100, colors = "#363636"))

EL ERAS TOUR

Empezó el 17 de marzo de 2023 y termino el 8 de diciembre de 2024, hace solo unas semanas.

Un concierto de 3 horas y media de duracion que abarcaba todos los albumes de la artista (11), con una seccion acustica con canciones sorpresas, preparando cada “era” con su tematica acompañada por una impresionante escenografia, vestuario exclusivo diseñado por los mejores diseñadores, coreografias, actuacion, produccion, todo impecable e impresionante… que se trasladó por 44 ciudades de mundo y en muchas de ellas hizo 2, 3 o mas presentaciones.

Código
 CIUDADES_ERAS_USA <- data.frame(
    nombre = c("Glendale", "Las Vegas", "Arlington", "Tampa", "Houston", 
               "Atlanta", "Nashville", "Philadelphia", "Foxborough", "East Rutherford", 
               "Chicago", "Detroit", "Pittsburgh", "Minneapolis", "Cincinnati", 
               "Kansas City", "Denver", "Seattle", "Santa Clara", "Inglewood"),
    longitude = c(-112.1860, -115.1398, -97.1081, -82.4572, -95.3698, 
                  -84.3880, -86.7816, -75.1652, -71.2478, -74.0972, 
                  -87.6298, -83.0458, -79.9959, -93.2650, -84.5120, 
                  -94.5786, -104.9903, -122.3321, -121.9552, -118.3531),
    latitude = c(33.5387, 36.1699, 32.7357, 27.9506, 29.7604, 
                 33.7490, 36.1627, 39.9526, 42.0654, 40.8330, 
                 41.8781, 42.3314, 40.4406, 44.9778, 39.1031, 
                 39.0997, 39.7392, 47.6062, 37.3541, 33.9617)) 

CIUDADES_MUNDO <- data.frame(
  nombre = c("Ciudad de México", "Monterrey", "Buenos Aires", "Río de Janeiro", "São Paulo", 
             "Edimburgo", "Liverpool", "Cardiff", "Dublín", "Ámsterdam", "Zúrich", 
             "Milán", "Lyon", "París", "Madrid", "Viena", "Hamburgo", "Múnich", 
             "Varsovia", "Tokio", "Sídney", "Melbourne", "Brisbane", "Perth"),
  longitude = c(-99.1332, -100.3161, -58.3816, -43.1729, -46.6333, 
                -3.1883, -2.9785, -3.1791, -6.2603, 4.9041, 8.5417, 
                9.1919, 4.8357, 2.3522, -3.7038, 16.3738, 9.9937, 
                11.5820, 21.0122, 139.6917, 151.2093, 144.9631, 
                153.0251, 115.8605),
  latitude = c(19.4326, 25.6866, -34.6037, -22.9068, -23.5505, 
               55.9533, 53.4084, 51.4816, 53.3498, 52.3676, 47.3769, 
               45.4642, 45.7640, 48.8566, 40.4168, 48.2082, 53.5511, 
               48.1351, 52.2297, 35.6895, -33.8688, -37.8136, 
               -27.4698, -31.9505))

# Unir los dataframes CIUDADES_ERAS_USA y CIUDADES_MUNDO
CIUDADES_UNIDAS <- rbind(CIUDADES_ERAS_USA, CIUDADES_MUNDO)

# Convertir a objeto sf
eras_cities_mundo_sf <- st_as_sf(CIUDADES_UNIDAS, 
                                 coords = c("longitude", "latitude"), 
                                 crs = 4326) # WGS84

# Crear un mapa interactivo
mapa_eras <- leaflet() %>%
  addTiles() %>%  # Agregar capa base de OpenStreetMap
  # Agregar las ciudades
  addCircleMarkers(data = CIUDADES_UNIDAS,
                   radius = 5,  # Tamaño de los puntos 
                   color = "blue",  # Color de los puntos 
                   stroke = FALSE,  # Sin bordes
                   fillOpacity = 0.8,  # Opacidad de relleno
                   popup = ~nombre) %>%  # Popup con nombre de ciudad
  # Añadir leyenda
  addLegend(position = "bottomright", 
            colors = c("blue"), 
            labels = c("Ciudades donde estuvo el ERAS TOUR"))

# Guardar el mapa como archivo HTML
saveWidget(mapa_eras, "mapa_eras_tour.html")

A continuación, se presenta un mapa interactivo que muestra las ciudades visitadas durante el Eras Tour. Este mapa destaca la amplitud global de la gira y cómo Taylor Swift ha llegado a audiencias en todo el mundo.

ESTA PAGINA NO SOPORTA EL GRAFICO, POR LO QUE DEBES VISUALIZARLO EN EL SIGUIENTE ENLACE, pincha aquí.

————————————————————————–

Analisis de sus canciones

Relacion entre popularidad y energia

Código

library(ggplot2)

tt <- rio::import(here::here("datos", "taylor_swift_spotify.xlsx"))

palette <- c('#e87e8b', '#d76477', '#c04b63', '#a8364f', '#8f203b')

# Crear un gráfico de dispersión para Popularidad vs Energía
ggplot(tt, aes(x = energy, y = popularity, color = popularity)) +
  geom_point(alpha = 0.6) +
  scale_color_gradientn(colors = palette) +
  labs(
    title = 'Relación entre Popularidad y Energía de las Canciones',
    x = 'Energía',
    y = 'Popularidad',
    color = 'Popularidad'
  ) +
  theme_minimal()

Con este grafico podemos interpretar que no hay relacion entre la energia y la popularidad, ya que no vemos una relacion positiva en el grafico.

Esto es de esperarse ya que Taylor Swift tiene una gran variedad de generos en su repertorio, empezó cantando country, luego fue evolucionando y explorando generos como el pop, el indie, etc.

Por lo que no, no es simplemente una famosa cantante pop, lo que hace su trabajo aun mas impresionante.


Canciones mas populares

Código
# Seleccionar las 10 canciones más populares
top_10_popular <- tt %>% 
  arrange(desc(popularity)) %>% 
  select(name, album, popularity, duration_ms) %>% 
  mutate(duration_min = round(duration_ms / 60000, 2)) %>% 
  select(-duration_ms) %>% 
  head(10)

# Mostrar la tabla en formato bonito con colores
kable(top_10_popular, caption = 'Top 10 Canciones Más Populares') %>% 
  kable_styling(bootstrap_options = c('striped', 'hover', 'condensed', 'responsive'), full_width = F) %>%
  row_spec(0, bold = TRUE, color = 'white', background = '#b34455') %>% # Encabezado en rojo oscuro
  row_spec(1:nrow(top_10_popular), background = '#fbeaea') # Filas con fondo rosa claro
Top 10 Canciones Más Populares
name album popularity duration_min
Cruel Summer Lover 99 2.97
Is It Over Now? (Taylor's Version) (From The Vault) 1989 (Taylor's Version) 94 3.82
Anti-Hero Midnights 92 3.34
Lover Lover 92 3.69
Now That We Don't Talk (Taylor's Version) (From The Vault) 1989 (Taylor's Version) 91 2.44
august folklore 91 4.37
Don’t Blame Me reputation 91 3.94
"Slut!" (Taylor's Version) (From The Vault) 1989 (Taylor's Version) 90 3.01
cardigan folklore 90 3.99
Style (Taylor's Version) 1989 (Taylor's Version) 89 3.85

Positividad emocional y “danceability” (el grado en que se puede bailar?)

En el contexto de las características musicales proporcionadas por Spotify, valence es una métrica que mide la positividad emocional percibida en una pista, pero no necesariamente significa felicidad en el sentido literal.

Código
library(ggplot2)


ggplot(tt, aes(x = danceability, y = valence, size = popularity, color = popularity)) +
  geom_point(alpha = 0.6) +
 scale_color_gradientn(colors = palette) +
  labs(
    title = 'Relación entre Valence (Felicidad) y Danceability',
    x = 'Danceability',
    y = 'Valence',
    size = 'Popularidad',
    color = 'Popularidad'
  ) +
  theme_minimal()

Este gráfico muestra cómo las canciones de Taylor Swift varían en términos de qué tan felices o positivas se sienten (valence) y qué tan fáciles son para bailar (danceability). Cada burbuja representa una canción, y su tamaño y color indican qué tan popular es. Se nota que la mayoría de las canciones están en un rango medio de felicidad y bailabilidad, lo que sugiere que las canciones más equilibradas en estas características tienden a ser más populares. También se ve que las canciones menos populares están en los extremos, ya sea porque son muy tristes o poco bailables. En general, parece que las canciones que combinan un buen ritmo con un tono positivo son las que más conectan con el público.




Con esto acabo mi trabajo para BigData, espero que os haya gustado!!


….




Información sobre la sesión

Abajo muestro mi entorno de trabajo y paquetes utilizados

sessioninfo::session_info() %>% details::details(summary = ‘current session info’)

Reutilizar