Get the Data

christmas_songs <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-12-24/christmas_songs.csv")
## Parsed with column specification:
## cols(
##   url = col_character(),
##   weekid = col_character(),
##   week_position = col_double(),
##   song = col_character(),
##   performer = col_character(),
##   songid = col_character(),
##   instance = col_double(),
##   previous_week_position = col_double(),
##   peak_position = col_double(),
##   weeks_on_chart = col_double(),
##   year = col_double(),
##   month = col_double(),
##   day = col_double()
## )
christmas_lyrics <- readr::read_tsv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-12-24/christmas_lyrics.tsv")
## Parsed with column specification:
## cols(
##   title = col_character(),
##   artist = col_character(),
##   songid = col_character(),
##   weekid = col_character(),
##   track_title = col_character(),
##   track_n = col_double(),
##   line = col_double(),
##   lyric = col_character()
## )
library(ggplot2)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
labs = tibble(
  x = c(2001.5,2005.5,2012.5,2008.5), y = c(33,3.5,7,33),
  label = c('My sissy was the reason\n for this billboard hit ',
            'My #2 holiday song',
            'Christmas songs seem to\nbe ranking in the top 50\nmore often the past 8 years\n(more red dots)',
            '2011 was super festive!\nNINE Christmas Songs\n making the top 100')
)


christmas_songs %>%
  filter(year >= 1989)%>%
  ggplot( aes(year,song))+
    geom_point(aes(color = week_position), size = 6)+
    labs(title = "HIT CHRISTMAS SONGS SINCE I WAS BORN", y = "",x = "Year the Song Hit Billboard's Top 100")+
    scale_color_gradientn(colours = c("darkred","red","darkgreen", "lightgrey"),name = "Billboard\nRank")+
    scale_x_continuous(breaks=c(1990, 1995, 2000, 2005, 2010, 2015))+
    geom_curve(x = 2004, y = 33, xend = 2001.5, yend = 38, arrow = arrow(length = unit (.2,'cm')), curvature = 0.5)+
    geom_curve(x = 2009, y = 3.5, xend = 2010, yend = 4.1, arrow = arrow(length = unit (.2,'cm')), curvature = 0.3)+
    geom_curve(x = 2009.5, y = 31, xend = 2010.5, yend = 24, arrow = arrow(length = unit (.2,'cm')), curvature = 0.3)+
  geom_label(data = labs, aes(label = label, x = x, y = y), hjust = 0, size = 3, label.size = 0)+
  theme_bw()+
  theme(title = element_text(colour = "darkred"),
        axis.text = element_text(colour = c("darkred","darkgreen")),
        panel.border = element_rect(colour = "darkgreen"))

ggsave("20191224_TidyTuesdayWk52_christmassongs.PNG", width = 14, height = 6, units = "in", dpi = 300)
LS0tDQp0aXRsZTogIlRpZHlUdWVzZGF5IFdrNTI6IENocmlzdG1hcyBTb25ncyINCmF1dGhvcjogIlNNYXJ0aW5leiINCmRhdGU6ICJEZWNlbWJlciAyNCwgMjAxOSINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZGVwdGg6IDUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICB0aGVtZTogZmxhdGx5DQogIHBkZl9kb2N1bWVudDogZGVmYXVsdA0KLS0tDQoNCg0KR2V0IHRoZSBEYXRhIA0KYGBge3J9IA0KY2hyaXN0bWFzX3NvbmdzIDwtIHJlYWRyOjpyZWFkX2NzdigiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Jmb3JkYXRhc2NpZW5jZS90aWR5dHVlc2RheS9tYXN0ZXIvZGF0YS8yMDE5LzIwMTktMTItMjQvY2hyaXN0bWFzX3NvbmdzLmNzdiIpDQoNCmNocmlzdG1hc19seXJpY3MgPC0gcmVhZHI6OnJlYWRfdHN2KCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcmZvcmRhdGFzY2llbmNlL3RpZHl0dWVzZGF5L21hc3Rlci9kYXRhLzIwMTkvMjAxOS0xMi0yNC9jaHJpc3RtYXNfbHlyaWNzLnRzdiIpDQpgYGANCg0KDQpgYGB7ciBtZXNzYWdlcyA9IEZBTFNFLHdhcm5pbmcgPSBGQUxTRSxmaWcud2lkdGg9MTQsZmlnLmhlaWdodD02fQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShkcGx5cikNCg0KbGFicyA9IHRpYmJsZSgNCiAgeCA9IGMoMjAwMS41LDIwMDUuNSwyMDEyLjUsMjAwOC41KSwgeSA9IGMoMzMsMy41LDcsMzMpLA0KICBsYWJlbCA9IGMoJ015IHNpc3N5IHdhcyB0aGUgcmVhc29uXG4gZm9yIHRoaXMgYmlsbGJvYXJkIGhpdCAnLA0KICAgICAgICAgICAgJ015ICMyIGhvbGlkYXkgc29uZycsDQogICAgICAgICAgICAnQ2hyaXN0bWFzIHNvbmdzIHNlZW0gdG9cbmJlIHJhbmtpbmcgaW4gdGhlIHRvcCA1MFxubW9yZSBvZnRlbiB0aGUgcGFzdCA4IHllYXJzXG4obW9yZSByZWQgZG90cyknLA0KICAgICAgICAgICAgJzIwMTEgd2FzIHN1cGVyIGZlc3RpdmUhXG5OSU5FIENocmlzdG1hcyBTb25nc1xuIG1ha2luZyB0aGUgdG9wIDEwMCcpDQopDQoNCg0KY2hyaXN0bWFzX3NvbmdzICU+JQ0KICBmaWx0ZXIoeWVhciA+PSAxOTg5KSU+JQ0KICBnZ3Bsb3QoIGFlcyh5ZWFyLHNvbmcpKSsNCiAgICBnZW9tX3BvaW50KGFlcyhjb2xvciA9IHdlZWtfcG9zaXRpb24pLCBzaXplID0gNikrDQogICAgbGFicyh0aXRsZSA9ICJISVQgQ0hSSVNUTUFTIFNPTkdTIFNJTkNFIEkgV0FTIEJPUk4iLCB5ID0gIiIseCA9ICJZZWFyIHRoZSBTb25nIEhpdCBCaWxsYm9hcmQncyBUb3AgMTAwIikrDQogICAgc2NhbGVfY29sb3JfZ3JhZGllbnRuKGNvbG91cnMgPSBjKCJkYXJrcmVkIiwicmVkIiwiZGFya2dyZWVuIiwgImxpZ2h0Z3JleSIpLG5hbWUgPSAiQmlsbGJvYXJkXG5SYW5rIikrDQogICAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcz1jKDE5OTAsIDE5OTUsIDIwMDAsIDIwMDUsIDIwMTAsIDIwMTUpKSsNCiAgICBnZW9tX2N1cnZlKHggPSAyMDA0LCB5ID0gMzMsIHhlbmQgPSAyMDAxLjUsIHllbmQgPSAzOCwgYXJyb3cgPSBhcnJvdyhsZW5ndGggPSB1bml0ICguMiwnY20nKSksIGN1cnZhdHVyZSA9IDAuNSkrDQogICAgZ2VvbV9jdXJ2ZSh4ID0gMjAwOSwgeSA9IDMuNSwgeGVuZCA9IDIwMTAsIHllbmQgPSA0LjEsIGFycm93ID0gYXJyb3cobGVuZ3RoID0gdW5pdCAoLjIsJ2NtJykpLCBjdXJ2YXR1cmUgPSAwLjMpKw0KICAgIGdlb21fY3VydmUoeCA9IDIwMDkuNSwgeSA9IDMxLCB4ZW5kID0gMjAxMC41LCB5ZW5kID0gMjQsIGFycm93ID0gYXJyb3cobGVuZ3RoID0gdW5pdCAoLjIsJ2NtJykpLCBjdXJ2YXR1cmUgPSAwLjMpKw0KICBnZW9tX2xhYmVsKGRhdGEgPSBsYWJzLCBhZXMobGFiZWwgPSBsYWJlbCwgeCA9IHgsIHkgPSB5KSwgaGp1c3QgPSAwLCBzaXplID0gMywgbGFiZWwuc2l6ZSA9IDApKw0KICB0aGVtZV9idygpKw0KICB0aGVtZSh0aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiZGFya3JlZCIpLA0KICAgICAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gYygiZGFya3JlZCIsImRhcmtncmVlbiIpKSwNCiAgICAgICAgcGFuZWwuYm9yZGVyID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICJkYXJrZ3JlZW4iKSkNCmdnc2F2ZSgiMjAxOTEyMjRfVGlkeVR1ZXNkYXlXazUyX2NocmlzdG1hc3NvbmdzLlBORyIsIHdpZHRoID0gMTQsIGhlaWdodCA9IDYsIHVuaXRzID0gImluIiwgZHBpID0gMzAwKQ0KYGBgDQoNCg==