Pentes à deux points


Cette semaine le #Tidytuesday nous fait découvrir la diversité culturelle dans les écoles des États-Unis. J’ai choisi de présenter le portrait global de l’évolution avec un graphique de pente à deux points.



CONTEXTE

Les données de cette semaine proviennent du Washington Post, courtoisie de Kate RabinowitzLaura Meckler et Armand Emamdjomeh.

Une section de la méthodologie, reprise textuellement de l’article, est ci-dessous:

« Cette analyse a utilisé le noyau commun de données du Centre national des statistiques de l’éducation (NCES). Les écoles à charte et les écoles privées ont été exclues en raison d’un contrôle limité des pouvoirs publics. Les écoles virtuelles ont également été exclues.

Le Washington Post a utilisé des données de l’année scolaire 1994-1995, les plus anciennes données presque complètes, et de 2016-2017, des dernières données disponibles. Les résultats ont été vérifiés par rapport aux années intermédiaires, à intervalles de cinq ans. »



OBJECTIFS

  1. Créer un visuel qui montre clairement l’évolution des différences de diversité raciale entre l’année scolaire 1994-1995 et l’année scolaire 2016-2017 pour l’ensemble des états des États-Unis.



IMPORTER

school_diversity <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-09-24/school_diversity.csv")
FALSE Parsed with column specification:  
FALSE cols(  
FALSE   LEAID = col_character(),  
FALSE   LEA_NAME = col_character(),  
FALSE   ST = col_character(),  
FALSE   d_Locale_Txt = col_character(),  
FALSE   SCHOOL_YEAR = col_character(),  
FALSE   AIAN = col_double(),  
FALSE   Asian = col_double(),  
FALSE   Black = col_double(),  
FALSE   Hispanic = col_double(),  
FALSE   White = col_double(),  
FALSE   Multi = col_double(),  
FALSE   Total = col_double(),  
FALSE   diverse = col_character(),  
FALSE   variance = col_double(),  
FALSE   int_group = col_character()  
FALSE )



EXPLORER

summary(school_diversity)
##     LEAID             LEA_NAME              ST             
##  Length:27944       Length:27944       Length:27944        
##  Class :character   Class :character   Class :character    
##  Mode  :character   Mode  :character   Mode  :character    
##                                                            
##                                                            
##                                                            
##                                                            
##  d_Locale_Txt       SCHOOL_YEAR             AIAN           
##  Length:27944       Length:27944       Min.   :  0.0000    
##  Class :character   Class :character   1st Qu.:  0.0000    
##  Mode  :character   Mode  :character   Median :  0.1566    
##                                        Mean   :  2.7879    
##                                        3rd Qu.:  0.6144    
##                                        Max.   :100.0000    
##                                                            
##      Asian              Black             Hispanic            White         
##  Min.   : 0.00000   Min.   :  0.0000   Min.   :  0.0000   Min.   :  0.00    
##  1st Qu.: 0.05818   1st Qu.:  0.2023   1st Qu.:  0.5505   1st Qu.: 65.24    
##  Median : 0.53124   Median :  0.9231   Median :  2.7094   Median : 88.60    
##  Mean   : 1.76956   Mean   :  6.5515   Mean   : 10.4520   Mean   : 76.93    
##  3rd Qu.: 1.44514   3rd Qu.:  3.9649   3rd Qu.: 10.1256   3rd Qu.: 96.45    
##  Max.   :74.90586   Max.   :100.0000   Max.   :100.0000   Max.   :100.00    
##                                                                             
##      Multi            Total           diverse             variance      
##  Min.   : 0.000   Min.   :      1   Length:27944       Min.   :0.000    
##  1st Qu.: 1.070   1st Qu.:    366   Class :character   1st Qu.:0.017    
##  Median : 2.378   Median :   1044   Mode  :character   Median :0.046    
##  Mean   : 3.202   Mean   :   3228                      Mean   :0.078    
##  3rd Qu.: 4.174   3rd Qu.:   2720                      3rd Qu.:0.107    
##  Max.   :85.308   Max.   :1020747                      Max.   :0.601    
##  NA's   :14760                                         NA's   :24923    ##   int_group          
##  Length:27944        
##  Class :character    
##  Mode  :character    
##                      
##                      
##                      
## 

Alors, pour créer le visuel que j’ai en tête avec ces données, il faut commencer par convertir les acronymes en noms d’état complet, identifier un moyen de grouper les écoles pour représenter une valeur moyenne représentative pour chaque état et convertir les catégories en valeurs numérique pour pouvoir mettre le tout en graphique.



PRÉPARER

code<-read.csv('~/Documents/ENTREPRISE/Projets R/Tidytuesday/codes_us.csv', header = TRUE, sep=";")    

school <- school_diversity %>%
     mutate(Abbreviation=ST) %>%
     left_join(code, by="Abbreviation") %>%
     mutate(code=case_when(diverse == 'Diverse' ~ 1,
                           diverse == 'Undiverse'  ~ 2,
                            diverse == 'Extremely undiverse'  ~ 3)) %>%
     mutate(annee=case_when(SCHOOL_YEAR == '1994-1995' ~ 1,                           SCHOOL_YEAR == '2016-2017'  ~ 2)) %>%
     select("State", "annee", "code") %>%
     group_by(State, annee, code) %>%
     dplyr::summarise(freq=n()) %>%
     ungroup() %>%
     group_by(State, annee) %>%
     top_n(1,freq) %>%
     ungroup()     

rect_1 = data.frame(xmin = c(0.95,1.95),
                    xmax = c(1.05,2.05),
                    ymin = c(0.75,0.75),
                    ymax = c(1.25,1.25))      

rect_2 = data.frame(xmin = c(0.95,1.95),
                    xmax = c(1.05,2.05),
                    ymin = c(1.75,1.75),
                    ymax = c(2.25,2.25))

rect_3 = data.frame(xmin = c(0.95,1.95),
                    xmax = c(1.05,2.05),
                    ymin = c(2.75,2.75),
                    ymax = c(3.25,3.25))      

school_1995<-school %>%
      filter(annee==1) %>%
      group_by(code) %>%
      dplyr::summarise(freq=n())        

school_2017<-school %>%
      filter(annee==2) %>%
      group_by(code) %>%
      dplyr::summarise(freq=n()) 



VISUALISER

#Graphique  
gg<-ggplot(school, aes(x=annee, y=code, group=State, color=State))  
gg<-gg + geom_line(position=position_jitter(w=0, h=0.1),size=1,color="#2E2E2E", alpha=0.5)  
gg<-gg + geom_rect(data=rect_1, aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax), color="#B494CC",fill = "#B494CC", inherit.aes=FALSE)  
gg<-gg + geom_rect(data=rect_2, aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax), color="#99C9DE",fill = "#99C9DE", inherit.aes=FALSE)  
gg<-gg + geom_rect(data=rect_3, aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax), color="#D1EAE5",fill = "#D1EAE5", inherit.aes=FALSE)  
#ajuster les axes  
gg<-gg + scale_x_continuous(breaks=seq(1,2,1), limits=c(0.8, 3), expand = c(0, 0), labels = c("1994-1995","2016-2017"))  
#annoter  
gg<-gg + annotate(geom="text", x=1,y=1, label="Peu\nDiversifié", color="#2E2E2E", size=4, hjust=0.5,vjust=0.5, fontface="bold", angle=90)  
gg<-gg + annotate(geom="text", x=2,y=1, label="Peu\nDiversifié", color="#2E2E2E", size=4, hjust=0.5,vjust=0.5, fontface="bold", angle=270)  
gg<-gg + annotate(geom="text", x=1,y=2, label="Diversifié", color="#2E2E2E", size=4, hjust=0.5,vjust=0.5, fontface="bold", angle=90)  
gg<-gg + annotate(geom="text", x=2,y=2, label="Diversifié", color="#2E2E2E", size=4, hjust=0.5,vjust=0.5, fontface="bold", angle=270)  
gg<-gg + annotate(geom="text", x=1,y=3, label="Très\nDiversifié", color="#2E2E2E", size=4, hjust=0.5,vjust=0.5, fontface="bold", angle=90)  
gg<-gg + annotate(geom="text", x=2,y=3, label="Très\nDiversifié", color="#2E2E2E", size=4, hjust=0.5,vjust=0.5, fontface="bold", angle=270)  
#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 = element_blank())    
#ajouter les titres  
gg<-gg + labs(title="L'évolution de la diversité dans les écoles américaines\n",
              subtitle = " ",
              x=" ",
              y=" ",
              caption="\nSOURCE:  Washington Post  |  DESIGN: Johanie Fournier, agr.")  
gg<-gg + theme(  plot.title    = element_text(size=37, hjust=0,vjust=0.5, family="Tw Cen MT", color="#2E2E2E"),
                 plot.subtitle = element_blank(),
                 plot.caption  = element_text(size=8, hjust=1,vjust=0.5, family="Tw Cen MT", color="#8B8B8B"),
                 axis.title.y  = element_blank(),
                 axis.title.x  = element_blank(),
                 axis.text.x   = element_text(size=12, hjust=0.5,vjust=0.5, family="Tw Cen MT", color="#2E2E2E"),
                 axis.text.y   = element_blank())  
#étiquette  
gg <- gg +  geom_text(aes(x = 2.1, y = 3),label = "Réprésente les écoles dont plus de 90% des étudiants\nsont d'une race différente. En 1995, 62% des états\naméricains avaient de écoles majoritaitement très\ndiversifiées. Ce pourcentage est passé à 42% en 2017.", size = 4.5, family = "Tw Cen MT",  color="#8B8B8B", hjust=0)  gg <- 
gg +  geom_text(aes(x = 2.1, y = 2),label = "Réprésente les écoles dont entre 75% et 90% des\nétudiants sont d'une race différente. En 1995, 4% des\nétats américains avaient de écoles majoritaitement\ndiversifiées. Ce pourcentage est passé à 16% en 2017.", size = 4.5, family = "Tw Cen MT",  color="#8B8B8B", hjust=0)  
gg <- gg +  geom_text(aes(x = 2.1, y = 1),label = "Réprésente les écoles dont moins de 75% des étudiants\nsont d'une race différente. En 1995, 34% des états\naméricains avaient de écoles majoritaitement peu\ndiversifiées. Ce pourcentage est passé à 44% en 2017.", size = 4.5, family = "Tw Cen MT",  color="#8B8B8B", hjust=0)

Voici ce que ça donne:





CONCLUSION

Finalement, le pourcentage d’états américains avec des écoles extrêmement diversifiées à chuté de 20%. Le visuel que j’ai créé explique bien les catégories et l’évolution, mais ne met pas en avant plan cette conclusion clairement. Je vais créer une autre version pour améliorer cet aspect et elle sera présentée dans mon prochain épisode de podcast.



Alors, tu veux en savoir plus sur ma démarche? Un épisode de podcast sera bientôt 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.