Histogramme empilé et ‘geom_chicklet’

Le #Tidytuesday de cette semaine concerne les armes nucléaires. J’ai donc utilisé 3 histogrammes pour créer une histoire entourant les armes nucléaires et tester ‘geom_chicklet’.



CONTEXTE

Les données de cette semaine sont disponibles dans le rapport suivant et sur wikipedia. Des informations aditionnelles peuvent être concultées ici.

La technologie des armes nucléaires a été mise au point dans les années 1930 et 1940. Les premières armes nucléaires ont explosées sur Hiroshima et Nagasaki en août 1945. La puissance dévastatrice des bombes larguées sur le Japon a forcée la reddition des Japonais. Depuis lors, le contrôle de la prolifération des armes nucléaires est une question importante dans les relations internationales et les deux détonations au Japon sont restées le seul usage de tous les temps en guerre.



OBJECTIFS

  1. Identifier le pays qui a enregistré le plus d’explosion nucléaire.
  2. Visualiser la région où ces bombes ont explosées avec la raison de la manière à monter une histoire sur le sujet.
  3. Utiliser ‘geom_chicklet’ pour créer les hisogrammes



IMPORTER

nuclear_explosions <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-08-20/nuclear_explosions.csv")
FALSE Parsed with column specification:  
FALSE cols(  
FALSE   date_long = col_double(),  
FALSE   year = col_double(),  
FALSE   id_no = col_double(),  
FALSE   country = col_character(),  
FALSE   region = col_character(),  
FALSE   source = col_character(),  
FALSE   latitude = col_double(),  
FALSE   longitude = col_double(),  
FALSE   magnitude_body = col_double(),  
FALSE   magnitude_surface = col_double(),  
FALSE   depth = col_double(),  
FALSE   yield_lower = col_double(),  
FALSE   yield_upper = col_double(),  
FALSE   purpose = col_character(),  
FALSE   name = col_character(),  
FALSE   type = col_character()  
FALSE 
)



EXPLORER

summary(nuclear_explosions)
##    date_long             year          id_no         country           
##  Min.   :19450716   Min.   :1945   Min.   :45001   Length:2051         
##  1st Qu.:19621066   1st Qu.:1962   1st Qu.:62140   Class :character    
##  Median :19700501   Median :1970   Median :70021   Mode  :character    
##  Mean   :19709736   Mean   :1971   Mean   :70934                       
##  3rd Qu.:19790920   3rd Qu.:1979   3rd Qu.:79044                       
##  Max.   :19980530   Max.   :1998   Max.   :98005                       
##                                                                        
##     region             source             latitude        longitude        
##  Length:2051        Length:2051        Min.   :-49.50   Min.   :-169.32    
##  Class :character   Class :character   1st Qu.: 37.00   1st Qu.:-116.05    
##  Mode  :character   Mode  :character   Median : 37.10   Median :-116.00    
##                                        Mean   : 35.40   Mean   : -36.05    
##                                        3rd Qu.: 49.87   3rd Qu.:  78.00    
##                                        Max.   : 75.10   Max.   : 179.22    
##                                                                            
##  magnitude_body  magnitude_surface     depth            yield_lower       
##  Min.   :0.000   Min.   :0.0000    Min.   :-400.0000   Min.   :    0.0    
##  1st Qu.:0.000   1st Qu.:0.0000    1st Qu.:   0.0000   1st Qu.:    0.0    
##  Median :0.000   Median :0.0000    Median :   0.0000   Median :    0.0    
##  Mean   :2.145   Mean   :0.3558    Mean   :  -0.4896   Mean   :  209.2    
##  3rd Qu.:5.100   3rd Qu.:0.0000    3rd Qu.:   0.0000   3rd Qu.:   20.0    
##  Max.   :7.400   Max.   :6.0000    Max.   :   1.4510   Max.   :50000.0    
##                                                        NA's   :3          
##   yield_upper         purpose              name            
##  Min.   :    0.00   Length:2051        Length:2051         
##  1st Qu.:   18.25   Class :character   Class :character    
##  Median :   20.00   Mode  :character   Mode  :character    
##  Mean   :  323.43                                          
##  3rd Qu.:  150.00                                          
##  Max.   :50000.00                                          
##  NA's   :5                                                 
##      type            
##  Length:2051         
##  Class :character    
##  Mode  :character    
##                      
##                      
##                      
## 

Toutes les informations nécessaire sont déjà dans la base de donnée. Reste juste à créer des tables avec l’information dont j’ai besion pour monter mon histoire.



PRÉPARER

#quel est le pays qui enregistre le plus d'explosion nucléaire?  
nuclear_explosions_cat <- nuclear_explosions %>%
     inspect_cat()  

pct_country<-nuclear_explosions_cat$levels$country %>%
     mutate(type="country")  

#rep=USA avec 50%    

#Dans quel région les États-Unis font-ils exploser leurs bombes?  
nuclear_explosions_cat <- nuclear_explosions %>%
     filter(country=="USA") %>%
     inspect_cat()  

pct_region<-nuclear_explosions_cat$levels$region %>%
     mutate(type="country")  
#rep: NTS avec 88% (Nevada Test Site)    

#Pour quel raison?  
nuclear_explosions_cat <- nuclear_explosions %>%
     filter(country=="USA") %>%
     mutate(raison="autres") %>%
     mutate(raison=ifelse(purpose=="COMBAT", "COMBAT", raison)) %>%
     mutate(raison=ifelse(purpose %in% c("WR", "WE", "WE/WR", "WR/WE", "SE/WR", "WR/SE"), "Training", raison)) %>%
     inspect_cat()  

pct_purpose<-nuclear_explosions_cat$levels$purpose  
pct_purpose<-nuclear_explosions_cat$levels$raison %>%
     mutate(type="country")  

#Entrainement



VISUALISER

#Graphique 1: Qui  
gg<-ggplot(pct_country, aes(x=type, y=prop, fill=reorder(value, -prop)))  
gg <- gg + geom_chicklet(width = 1.8)  
gg <- gg + coord_flip()  
gg <- gg + scale_fill_manual(values=c("#749594", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB"))  
#retirer la légende  
gg <- gg + theme(legend.position = "none")  
#ajuster les axes   
gg <- gg + expand_limits(y=c(0, 1.3))  
gg <- gg + expand_limits(x=c(-4, 3))  
#modifier le thème  
gg <- gg +  theme(    panel.border = element_blank(),
                      panel.background = element_blank(),
                      plot.background = element_blank(),
                      panel.grid.major.x= element_blank(),
                      panel.grid.major.y= element_blank(),
                      panel.grid.minor = element_blank(),
                      axis.line.x = element_blank(),
                      axis.line.y = element_blank(),
                      axis.ticks.y = element_blank(),
                      axis.ticks.x = element_blank())  
#ajouter les titres  
gg<-gg + labs(  title="Qui s'amuse avec des armes nucléaires?",
                subtitle="\nLa technologie des armes nucléaires a été mise au point dans les\nannées 1930 et 1940. Depuis, 2078 bombes ont été déployées.\n\nPourcentage des dispositifs nucléaires déployés par pays",
                y=" ",
                x=" ")
gg<-gg + theme(    plot.title    = element_text(size=40, hjust=0,vjust=0, face="bold", family="Tw Cen MT"),
                   plot.subtitle = element_text(size=25, hjust=0,vjust=0, family="Tw Cen MT", color="#7A878E"),
                   axis.title.y  = element_blank(),
                   axis.title.x  = element_blank(),
                   axis.text.y   = element_blank(),
                   axis.text.x   = element_blank())  
#ajouter les étiquettes de données  
gg<-gg + annotate(geom="text", x=1,y=0.01, label="États-Unis", color="black", size=10, hjust=0,vjust=0.5, fontface="bold", family="Tw Cen MT")  
gg<-gg + annotate(geom="text", x=1,y=0.38, label="50%", color="black", size=10, hjust=0,vjust=0.5, fontface="bold", family="Tw Cen MT")
#Graphique 2: pourquoi  
gg<-ggplot(pct_purpose, aes(x=type, y=prop))  
gg <- gg + geom_chicklet(aes(fill=reorder(value, -prop)),width = 1.8)  
gg <- gg + coord_flip()  gg <- gg + scale_fill_manual(values=c("#749594", "#AFB7BB", "#AFB7BB"))  
#retirer la légende  
gg <- gg + theme(legend.position = "none")  
#ajuster les axes   
gg <- gg + expand_limits(y=c(0, 1.3))  
gg <- gg + expand_limits(x=c(-4, 3))  
#modifier le thème  
gg <- gg +  theme(    panel.border = element_blank(),
                      panel.background = element_blank(),
                      plot.background = element_blank(),
                      panel.grid.major.x= element_blank(),
                      panel.grid.major.y= element_blank(),
                      panel.grid.minor = element_blank(),
                      axis.line.x = element_blank(),
                      axis.line.y = element_blank(),
                      axis.ticks.y = element_blank(),
                      axis.ticks.x = element_blank())  
#ajouter les titres  
gg<-gg + labs(  title=" ",
                subtitle="Raisons du déploiement des bombes des États-Unis",
                y=" ",
                x=" ")  
gg<-gg + theme(    plot.title    = element_blank(),
                   plot.subtitle = element_text(size=25, hjust=0,vjust=0, family="Tw Cen MT", color="#7A878E"),
                   axis.title.y  = element_blank(),
                   axis.title.x  = element_blank(),
                   axis.text.y   = element_blank(),
                   axis.text.x   = element_blank())  
#Faire des flèches  
arrows <- tibble(    
x1 = c(2.2),    
x2 = c(1.9),    
y1 = c(1.20),    
y2 = c(1)  
)  
gg<-gg +    geom_curve(data = arrows, aes(x = x1, y = y1, xend = x2, yend = y2),
                                 arrow = arrow(length = unit(0.1, "inch")),
                                 size = 0.8, color = "#D33E43", curvature = 0.3)  
#ajouter les étiquettes de données  
gg<-gg + annotate(geom="text", x=1,y=0.01, label="Entrainement", color="black", size=10, hjust=0,vjust=0.5, fontface="bold", family="Tw Cen MT")  
gg<-gg + annotate(geom="text", x=1,y=0.78, label="90%", color="black", size=10, hjust=0,vjust=0.5, fontface="bold", family="Tw Cen MT")  
gg<-gg + annotate(geom="text", x=1,y=1.2, label="Combat\n0.002%", color="#D33E43", size=7, hjust=0.5,vjust=0.5, fontface="bold", family="Tw Cen MT")
#Graphique 3: ou?  
gg<-ggplot(pct_region, aes(x=type, y=prop))  
gg <- gg + geom_chicklet(aes(fill=reorder(value, -prop)),width = 1.8)  
gg <- gg + coord_flip()  gg <- gg + scale_fill_manual(values=c("#749594", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB", "#AFB7BB"))  
#retirer la légende  
gg <- gg + theme(legend.position = "none")  
#ajuster les axes   
gg <- gg + expand_limits(y=c(0, 1.3))  
gg <- gg + expand_limits(x=c(-4, 3))  
#modifier le thème  
gg <- gg +  theme(    panel.border = element_blank(),
                      panel.background = element_blank(),
                      plot.background = element_blank(),
                      panel.grid.major.x= element_blank(),
                      panel.grid.major.y= element_blank(),
                      panel.grid.minor = element_blank(),
                      axis.line.x = element_blank(),
                      axis.line.y = element_blank(),
                      axis.ticks.y = element_blank(),
                      axis.ticks.x = element_blank())  
#ajouter les titres  
gg<-gg + labs(  title=" ",
                subtitle="Région où les bombes des États-Unis ont été déployées",
                y=" ",
                x=" ",
                caption= "Les premières armes nucléaires ont explosées sur Hiroshima et\nNagasaki en août 1945 au cours de la 2e Guerre Mondiale et ont\ncausées des  milliers de morts. Depuis, le contrôle de la prolifération\ndes armes nucléaires est une question importante dans les\nrelations internationales.")  
gg<-gg + theme(   plot.title    = element_blank(),
                   plot.subtitle = element_text(size=25, hjust=0,vjust=0, family="Tw Cen MT", color="#7A878E"),
                   plot.caption = element_text(size=25, hjust=0,vjust=0, family="Tw Cen MT", color="#7A878E"),
                   axis.title.y  = element_blank(),
                   axis.title.x  = element_blank(),
                   axis.text.y   = element_blank(),
                   axis.text.x   = element_blank())  
#Faire des flèches  
arrows <- tibble(    
x1 = c(2.2),    
x2 = c(1.9),    
y1 = c(1.20),    
y2 = c(0.99)  
)  
gg<-gg +    geom_curve(data = arrows, aes(x = x1, y = y1, xend = x2, yend = y2),
                                 arrow = arrow(length = unit(0.1, "inch")),
                                 size = 0.8, color = "#D33E43", curvature = 0.3)  
#ajouter les étiquettes de données  
gg<-gg + annotate(geom="text", x=1,y=0.01, label="Site test au Nevada", color="black", size=10, hjust=0,vjust=0.5, fontface="bold", family="Tw Cen MT")  
gg<-gg + annotate(geom="text", x=1,y=0.76, label="88%", color="black", size=10, hjust=0,vjust=0.5, fontface="bold", family="Tw Cen MT")  
gg<-gg + annotate(geom="text", x=1,y=1.2, label="Hiroshima et\nNagasaki 0.002%", color="#D33E43", size=7, hjust=0.5,vjust=0.5, fontface="bold", family="Tw Cen MT")

Voici ce que ça donne:



histogramme avec geom_chicklet

Conclusion

Même si la grande majorité des bombes déployées par les États-Unis l’ont été pour des raisons d’entrainement dans des zones contrôlées, cette technologie a déjà démontrée à quelle point elle peut être destructrice…



Alors, tu veux en savoir plus sur ma démarche? Un épisode de podcast est maintenant disponible dans lequel je t’explique toute la réflexion et les concepts de data visualisation qui ont menés à la création de cette viz.

Publicités

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.