Aires 3D

CONTEXTE

Les données du #Tidytuesday de cette semaine proviennent de The Wallstreet Journal.



OBJECTIFS

  1. Montrer l’évolution des performances des joueurs (nombre de but) en fonction de l’âge et de la décennie.



IMPORTER

#tuesdata <- tidytuesdayR::tt_load('2020-03-03')  
game_goals <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2020/2020-03-03/game_goals.csv')
FALSE Parsed with column specification:  
FALSE cols(  
FALSE   .default = col_double(),  
FALSE   player = col_character(),  
FALSE   date = col_date(format = ""),  
FALSE   age = col_character(),  
FALSE   team = col_character(),  
FALSE   at = col_character(),  
FALSE   opp = col_character(),  
FALSE   location = col_character(),  
FALSE   outcome = col_character()  
FALSE )
FALSE See spec(...) for full column specifications.


EXPLORER

#Sélectionner seulement les variables qui m'intéressent  
game<-game_goals %>%
     separate(age,into=c("annee", "jour"), "-") %>%
     mutate(annee=as.numeric(annee)) %>%
     select(season, annee, goals)    

glimpse(game)
## Observations: 49,384  
## Variables: 3  
## $ season <dbl> 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 200…  
## $ annee  <dbl> 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 2…  
## $ goals  <dbl> 2, 0, 0, 1, 1, 0, 0, 2, 0, 0, 2, 0, 0, 2, 2, 1, 0, 1, 1, …
summary(game)
##      season         annee           goals         
##  Min.   :1980   Min.   :18.00   Min.   :0.0000    
##  1st Qu.:1997   1st Qu.:23.00   1st Qu.:0.0000    
##  Median :2008   Median :27.00   Median :0.0000    
##  Mean   :2005   Mean   :27.77   Mean   :0.4136    
##  3rd Qu.:2014   3rd Qu.:32.00   3rd Qu.:1.0000    
##  Max.   :2020   Max.   :45.00   Max.   :5.0000
plt1 <-game %>%
     ggplot(aes(x=" ", y = goals)) +
     geom_boxplot(fill = "#FFFFFF", color = "black") +
     coord_flip() +    theme_classic() +    xlab("") +
    ylab("Nombre de but")+
    theme(axis.text.y=element_blank(),
          axis.ticks.y=element_blank())    

plt2 <-game %>%
    ggplot() +
    geom_histogram(aes(x = goals, y = (..count..)/sum(..count..)),                         position = "identity", binwidth = 1,
                          fill = "#FFFFFF", color = "black") +
     ylab("Fréquence Relative")+
     xlab("")+
     theme_classic()+
    theme(axis.text.x = element_blank())+
    theme(axis.ticks.x = element_blank())  

plt2 + plt1 + plot_layout(nrow = 2, heights = c(2, 1))

game %>% 
    group_by(season,annee) %>%
     summarise(nb=sum(goals, na.rm=TRUE)) %>%
     spread(annee, nb) %>%
     knitr::kable()
season 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
1980 30 34 35 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
1981 NA 34 84 58 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
1982 NA NA 93 124 47 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
1983 NA 14 NA 72 127 40 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
1984 39 NA 38 NA 79 134 41 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
1985 NA 73 NA 31 NA 58 122 52 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
1986 NA NA 62 NA 36 NA 55 127 52 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
1987 NA NA 33 97 1 25 NA 66 131 49 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
1988 4 3 NA 36 137 32 30 NA 57 97 55 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
1989 NA 28 17 NA 38 158 41 28 NA 47 116 45 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
1990 NA NA 57 12 NA 40 119 72 40 NA 54 98 52 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
1991 18 9 NA 65 12 NA 33 82 86 36 NA 34 42 47 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
1992 NA 23 9 NA 49 13 NA 34 99 70 41 NA 40 81 46 NA NA NA NA NA NA NA NA NA NA NA NA NA
1993 NA NA 22 12 76 73 26 NA 38 152 54 54 NA 21 75 58 NA NA NA NA NA NA NA NA NA NA NA NA
1994 NA NA NA 20 12 25 57 23 NA 31 54 57 53 NA 36 83 38 NA NA NA NA NA NA NA NA NA NA NA
1995 NA NA NA NA 13 19 22 19 20 NA 7 28 29 22 NA 1 37 25 NA NA NA NA NA NA NA NA NA NA
1996 NA NA NA NA NA 45 17 40 72 23 NA 19 109 43 28 NA 44 59 42 NA NA NA NA NA NA NA NA NA
1997 NA 21 NA NA NA NA 44 3 51 47 22 NA 23 73 42 27 NA 41 62 38 NA NA NA NA NA NA NA NA
1998 16 NA 13 NA NA NA NA 25 10 52 47 8 NA 16 24 27 14 NA 28 37 13 NA NA NA NA NA NA NA
1999 NA 37 NA 28 NA NA NA NA 26 18 47 58 14 NA 29 39 32 15 NA 19 9 NA NA NA NA NA NA NA
2000 NA NA 40 NA 29 NA NA NA NA 37 5 33 54 15 NA 29 42 24 20 NA 7 10 NA NA NA NA NA NA
2001 NA 12 NA 62 NA 31 NA NA NA NA 31 21 33 71 14 NA 28 62 39 20 NA 16 8 NA NA NA NA NA
2002 29 NA 17 NA 43 NA 52 NA NA NA NA 18 13 29 52 11 NA 23 26 30 21 NA 7 0 NA NA NA NA
2003 NA 45 NA 8 NA 64 NA 35 NA NA NA NA 31 5 28 42 14 NA 6 35 37 20 NA 13 5 NA NA NA
2004 17 11 63 NA 11 NA 51 NA 41 NA NA NA NA 20 11 16 50 8 NA 14 27 25 21 NA 13 5 NA NA
2006 39 NA 132 74 71 0 31 NA 63 NA 35 NA NA NA NA 40 14 40 54 18 NA 13 23 0 6 NA NA NA
2007 NA 67 33 123 93 76 NA 33 NA 54 NA 39 NA NA NA NA 21 9 48 60 5 NA NA NA NA NA NA NA
2008 7 38 75 47 149 123 86 0 9 NA 48 NA 50 NA NA NA NA 15 10 12 28 8 NA NA NA NA NA NA
2009 6 25 54 120 35 155 146 75 NA 4 NA 63 NA 35 NA NA NA NA NA NA 27 3 5 NA NA NA NA NA
2010 NA 56 50 49 142 28 136 128 64 0 10 NA 64 NA 32 NA NA NA NA NA NA 27 NA NA NA NA NA NA
2011 7 4 69 34 87 111 15 147 96 52 NA 22 NA 58 NA 43 NA NA NA NA NA NA 31 NA NA NA NA NA
2012 NA 19 10 65 68 97 110 50 124 113 71 NA 22 NA 48 NA 32 NA NA NA NA 13 6 26 NA NA NA NA
2013 NA NA 1 15 35 34 79 66 9 72 96 12 1 11 NA 24 NA 14 NA NA NA NA 4 12 12 NA NA NA
2014 NA NA NA 24 13 38 61 105 129 23 174 114 23 0 19 NA 44 NA 30 NA NA NA NA 17 7 9 NA NA
2015 NA NA NA NA 28 9 66 64 102 92 28 146 120 17 NA 18 NA 35 NA 29 NA NA NA NA 11 6 NA NA
2016 NA NA NA NA NA 25 8 54 79 118 118 27 143 97 33 NA 22 NA 44 NA 22 NA NA NA NA 17 10 NA
2017 NA NA NA NA NA NA 18 8 37 36 119 102 33 112 98 15 NA 24 NA 34 NA 14 NA NA NA NA 10 6
2018 NA NA NA NA NA NA NA 23 17 56 57 85 123 42 117 110 8 NA 16 NA 40 NA NA NA NA NA NA 1
2019 NA NA NA NA NA NA NA NA 18 15 75 60 121 91 21 115 111 24 NA 23 NA 32 NA NA NA NA NA NA
2020 NA NA NA NA NA NA NA NA NA 11 5 51 41 80 63 21 107 65 18 NA 2 NA 14 NA NA NA NA NA


PRÉPARER

#grouper par tranche de 10 ans  
data<-game %>%
     mutate(decade = floor(season/10)*10) %>%
         group_by(decade, annee) %>%
         summarize_all(sum) %>%
         select(-season) %>%
         ungroup() %>%
     filter(!decade==2020)    

glimpse(data)
FALSE Observations: 87  
FALSE Variables: 3  
FALSE $ decade <dbl> 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 198…  
FALSE $ annee  <dbl> 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 18, 19, 2…  
FALSE $ goals  <dbl> 73, 186, 362, 418, 465, 447, 289, 273, 240, 193, 171, 45,…



VISUALISER

#Graphique
library(ggridges)  
gg <- ggplot(data, aes(x=annee, y=decade, group=decade,height=goals))  
gg <- gg + geom_density_ridges(stat="identity", scale = 2, fill="#0098D5", color="#58595B")  
gg <- gg + theme(legend.position = 'none')  
gg <- gg + scale_x_continuous(breaks = seq(18,48,10), limits=c(18, 48), expand=c(0, 0))  
gg <- gg + scale_y_continuous(breaks = seq(1980,2010,10), limits=c(1980, 2030), expand=c(0, 0))    
#modifier le thème  
gg <- gg +  theme(plot.background = element_rect(fill = "#58595B"),
                    panel.background = element_rect(fill = "#58595B"),
                    panel.grid.major.y= element_blank(),
                    panel.grid.major.x= element_blank(),
                    panel.grid.minor = element_blank(),
                    axis.line.x = element_line(color="white"),
                    axis.line.y = element_line(color="white"),
                    axis.ticks.x = element_blank(),
                     axis.ticks.y = element_blank())  
#ajouter les titres  
gg<-gg + labs(title="Les joueurs de la LNH des années 2010 <span style='color:#0098D5'>comptent plus de but</span> début trentaine",                subtitle = " ",
              x="Âge",
              y=" ",
              caption="\nSOURCE:  HockeyReference.com   |  DESIGN: Johanie Fournier, agr.")  
gg<-gg + theme(  plot.title    = element_markdown(lineheight = 1.1,size=18, hjust=1,vjust=0.5, color="white"),
                   plot.subtitle = element_blank(),
                   plot.caption  = element_text(size=10, hjust=1,vjust=0.5, family="Tw Cen MT", color="white"),
                   axis.title.y  = element_blank(),
                   axis.title.x  = element_text(size=12, hjust=0,vjust=0.5, family="Tw Cen MT", color="white"),
                   axis.text.x   = element_text(size=10, hjust=0.5,vjust=0.5, family="Tw Cen MT", color="white"),
                    axis.text.y   = element_text(size=10, hjust=1,vjust=0.5, family="Tw Cen MT", color="white"))      

Voici ce que ça donne:





Alors, tu veux en savoir plus sur ma démarche? Abonne-toi à mon infolettre pour savoir quand est-ce que le prochain épisode de podcast sera disponible. J’y expliquerai toute la réflexion et les concepts de data visualisation qui ont menés à la création de cette viz.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.