TyT2019|W16: Rang, histogramme ou autre??

Pour le #Tidytuesday de cette semaine, nous avons l’occasion de regarder des visualisations qui ont étés révisées par Sarah Leo de The Economist . Dans leur archives, elle a trouvé 7 exemples de graphiques qui avaient besion d’être revu.

CONTEXTE

Pour cette semaine, je me concentre sur son 7e exemple qui concerne la place des femmes dans le monde de la recherche avec publications.

La visualisation originale présente le pourcentage des femmes qui ont soumis des publications pour différents domaines (sciences de la santé, sciences physique, ingénérie, mathématique et sciences informatiques, inventeures) pour différents pays.

Le défi ici des d’essayer de présenter beaucoup de données dans un espace restreint.

Voici le graphique original à revoir:

OBJECTIFS

1) Explorer quelques visualisation pour voir ce qui se prête le mieux à ces données.

IMPORTER

brexit <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-04-16/brexit.csv")
FALSE Parsed with column specification:
FALSE cols(
FALSE   date = col_character(),
FALSE   percent_responding_right = col_double(),
FALSE   percent_responding_wrong = col_double()
FALSE )
corbyn <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-04-16/corbyn.csv")
FALSE Parsed with column specification:
FALSE cols(
FALSE   political_group = col_character(),
FALSE   avg_facebook_likes = col_double()
FALSE )
dogs <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-04-16/dogs.csv")
FALSE Parsed with column specification:
FALSE cols(
FALSE   year = col_double(),
FALSE   avg_weight = col_double(),
FALSE   avg_neck = col_double()
FALSE )
eu_balance <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-04-16/eu_balance.csv")
FALSE Parsed with column specification:
FALSE cols(
FALSE   country = col_character(),
FALSE   account_type = col_character(),
FALSE   year = col_double(),
FALSE   value = col_double()
FALSE )
pensions <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-04-16/pensions.csv")
FALSE Parsed with column specification:
FALSE cols(
FALSE   country = col_character(),
FALSE   pop_65_percent = col_double(),
FALSE   gov_spend_percent_gdp = col_double()
FALSE )
trade <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-04-16/trade.csv")
FALSE Parsed with column specification:
FALSE cols(
FALSE   year = col_double(),
FALSE   trade_deficit = col_double(),
FALSE   manufacture_employment = col_double()
FALSE )
women_research <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-04-16/women_research.csv")
FALSE Parsed with column specification:
FALSE cols(
FALSE   country = col_character(),
FALSE   field = col_character(),
FALSE   percent_women = col_double()
FALSE )

EXPLORER

glimpse(women_research)
## Observations: 60
## Variables: 3
## $ country       <chr> "Japan", "Chile", "United Kingdom", "United States…
## $ field         <chr> "Health sciences", "Health sciences", "Health scie…
## $ percent_women <dbl> 0.24, 0.43, 0.45, 0.46, 0.46, 0.47, 0.48, 0.48, 0.…
summary(women_research)
##    country             field           percent_women   
##  Length:60          Length:60          Min.   :0.0800  
##  Class :character   Class :character   1st Qu.:0.1900  
##  Mode  :character   Mode  :character   Median :0.2250  
##                                        Mean   :0.2617  
##                                        3rd Qu.:0.2825  
##                                        Max.   :0.5700
summary%
  group_by(field)%>%
  summarise(mean=mean(percent_women))

Les données ont déjà été travaillées ici, donc rien de ce qui est présenté dans cette table est inutilisé pour faire la visualisation. De plus, tout est déjà sous un format prêt à travailler. Par contre, pour la visualisation que j’ai en tête, il faut quand même travailler un peu pour préparer les données:

Pour regarder les données avec un graphique de rang:

PRÉPARER:

rank%
  mutate(country=(ifelse(country=="United Kingdom", "UK", country)))%>%
  mutate(country=(ifelse(country=="United States", "US", country)))%>%
  mutate(field=(ifelse(field=="Computer science, maths", "Informatique, maths", field)))%>%
  mutate(field=(ifelse(field=="Engineering", "Ingénérie", field)))%>%
  mutate(field=(ifelse(field=="Health sciences", "Sciences de la santé", field)))%>%
  mutate(field=(ifelse(field=="Physical sciences", "Sciences physique", field)))%>%
  mutate(field=(ifelse(field=="Women inventores", "Inventeures", field)))%>%
  spread(country, percent_women)%>%
  arrange((`Australia`)) %>%
          mutate(`Australia`= c(1:5))%>%
  arrange((`Brazil`)) %>%
          mutate(`Brazil`= c(1:5))%>%
  arrange((`Canada`)) %>%
          mutate(`Canada`= c(1:5))%>%
  arrange((`Chile`)) %>%
          mutate(`Chile`= c(1:5))%>%
   arrange((`Denmark`)) %>%
          mutate(`Denmark`= c(1:5))%>%
     arrange((`EU28`)) %>%
          mutate(`EU28`= c(1:5))%>%
     arrange((`France`)) %>%
          mutate(`France`= c(1:5))%>%
     arrange((`Japan`)) %>%
          mutate(`Japan`= c(1:5))%>%
     arrange((`Mexico`)) %>%
          mutate(`Mexico`= c(1:5))%>%
     arrange((`Portugal`)) %>%
          mutate(`Portugal`= c(1:5))%>%
     arrange((`UK`)) %>%
          mutate(`UK`= c(1:5))%>%
     arrange((`US`)) %>%
          mutate(`US`= c(1:5))%>%
  gather(key=country, value=rang, -field) #changer la mise en page pour analyse

VISUALISER

#Graphique
gg<-ggplot(data=rank, aes(x=country, y=rang, group=field, color=field))
gg<-gg + geom_line(size=3)
gg<-gg + geom_point(size=5)
#Ajouter les étiquettes de données
gg% filter(country == "Australia"), aes(label = field, x = 0.8) , hjust = 1, size = 4)
gg<-gg + scale_color_manual(values = c("#E8EBE4", "#E8EBE4", "#FE9920", "#698F3F", "#E8EBE4"))
#ajuster les axes
#gg<-gg + scale_y_continuous(breaks=seq(1,7,1), limits = c(1, 7))
#gg<-gg + scale_x_discrete(breaks=seq(0, 12, 1),limits = c(0, 12))
gg<-gg + expand_limits(x =c(-2,16))
#modifier la légende
gg<-gg + theme(legend.position="none")
#modifier le thème
gg<-gg +theme(panel.border = element_blank(),
              panel.background = element_rect(fill = "#292E1E", colour = "#292E1E"),
              plot.background = element_rect(fill = "#292E1E", colour = "#292E1E"),
              panel.grid.major.y= element_blank(),
              panel.grid.major.x= element_blank(),
              panel.grid.minor = element_blank(),
              axis.line = element_blank(),
              axis.ticks.y = element_blank(),
              axis.ticks.x = element_blank())
#ajouter les titres
gg<-gg + labs(title= NULL,
              subtitle=NULL,
              y=NULL,
              x=NULL)
gg<-gg + theme(plot.title    = element_text(hjust=0,size=25, color="#E8EBE4"),
               plot.subtitle = element_text(hjust=0,size=18, color="#E8EBE4"),
               axis.title.y  = element_blank(),
               axis.title.x  = element_blank(),
               axis.text.y   = element_blank(),
               axis.text.x   = element_text(hjust=0.5, size=10, color="#E8EBE4"))
#Ajouter les étiquettes de données
gg<-gg + annotate(geom="text", x=12.3,y=5, label="Les sciences de la santé sont le\ndomaine de recherche ou les\nfemmes sont les plus présentes.\nEn moyenne 47% des publications\nsont faites par des femmes.", color="#698F3F", size=4, hjust=0,vjust=0.9)
gg<-gg + annotate(geom="text", x=12.3,y=3, label="L'ingénierie, l'informatique, les\nmathématiques et les sciences\nphysiques sont des domaines où\n23% des articles sont publiés par\nune femme.", color="#E8EBE4", size=4, hjust=0,vjust=0.5)
gg<-gg + annotate(geom="text", x=12.3,y=1, label="Inventeurs est le domaine le moins\nreprésenté par la femme. En\nmoyenne, seulement 15% des\narticles sont publiés par une femme.", color="#FE9920", size=4, hjust=0, vjust=0.1)

Voici ce que ça donne:

Pour regarder les données avec un histogramme:

PRÉPARER:

bar%
  mutate(country=(ifelse(country=="United Kingdom", "UK", country)))%>%
  mutate(country=(ifelse(country=="United States", "US", country)))%>%
  mutate(field=(ifelse(field=="Computer science, maths", "Informatique, maths", field)))%>%
  mutate(field=(ifelse(field=="Engineering", "Ingénérie", field)))%>%
  mutate(field=(ifelse(field=="Health sciences", "Sciences de la santé", field)))%>%
  mutate(field=(ifelse(field=="Physical sciences", "Sciences physique", field)))%>%
  mutate(field=(ifelse(field=="Women inventores", "Inventeures", field)))

VISUALISER

#Graphique
gg<-ggplot(data=bar, aes(x=country, y=percent_women, group=field, fill=field))
gg<-gg + geom_bar(stat="identity", width = 0.65)
gg<-gg + scale_fill_manual(values = c("#E8EBE4", "#E8EBE4", "#FE9920", "#698F3F", "#E8EBE4"))
gg<-gg +geom_hline(data = bar, aes(yintercept = 0),color="#E8EBE4", size=1.5)
gg<-gg + facet_wrap((factor(field,levels=c("Sciences de la santé","Ingénérie","Informatique, maths","Sciences physique", "Inventeures")) ~ .), ncol=1)
gg<-gg + theme(strip.text.x = element_text(size=12, face="bold", hjust=0, color="#E8EBE4"),
         strip.background = element_rect(colour="#292E1E", fill="#292E1E"))
#ajuster les axes
gg<-gg + scale_y_continuous(labels = function(x) paste0(x*100, "%"), limits =c(0, 1))
#modifier la légende
gg<-gg + theme(legend.position="none")
#modifier le thème
gg<-gg +theme(panel.border = element_blank(),
              panel.background = element_rect(fill = "#292E1E", colour = "#292E1E"),
              plot.background = element_rect(fill = "#292E1E", colour = "#292E1E"),
              panel.grid.major.y= element_blank(),
              panel.grid.major.x= element_blank(),
              panel.grid.minor = element_blank(),
              axis.line.x = element_blank(),
              axis.line.y = element_line(linetype = "solid", size=1, color="#E8EBE4"),
              axis.ticks.y = element_line(linetype = "solid", size=0.3, color="#E8EBE4"),
              axis.ticks.x = element_blank())
#ajouter les titres
gg<-gg + labs(title= NULL,
              subtitle=NULL,
              y="Pourcentage des articles publiés qui l'on été par des femmes",
              x=NULL)
gg<-gg + theme(plot.title    = element_text(hjust=0,size=25, color="#E8EBE4"),
               plot.subtitle = element_text(hjust=0,size=18, color="#E8EBE4"),
               axis.title.y  = element_text(hjust=0.5, size=10, color="#E8EBE4", angle=90),
               axis.title.x  = element_blank(),
               axis.text.y   = element_text(hjust=0.5, size=10, color="#E8EBE4"),
               axis.text.x   = element_text(hjust=0.5, size=10, color="#E8EBE4"))

Voici ce que ça donne:

Pour regarder les données avec un graphique de points:

PRÉPARER:

bar%
  mutate(country=(ifelse(country=="United Kingdom", "UK", country)))%>%
  mutate(country=(ifelse(country=="United States", "US", country)))%>%
  mutate(field=(ifelse(field=="Computer science, maths", "Informatique, maths", field)))%>%
  mutate(field=(ifelse(field=="Engineering", "Ingénérie", field)))%>%
  mutate(field=(ifelse(field=="Health sciences", "Sciences de la santé", field)))%>%
  mutate(field=(ifelse(field=="Physical sciences", "Sciences physique", field)))%>%
  mutate(field=(ifelse(field=="Women inventores", "Inventeures", field)))%>%
  mutate(gap=0.5-percent_women)

VISUALISER

#Graphique
gg<-ggplot(data=bar, aes(x=country, y=gap, group=field, color=factor(field, levels=c("Sciences de la santé","Informatique, maths","Ingénérie","Sciences physique","Inventeures"))))
gg<-gg + geom_point(size=5)
gg<-gg + scale_color_manual(values = c("#698F3F", "#E8EBE4", "#E8EBE4", "#E8EBE4", "#FE9920"))
gg<-gg + geom_hline(yintercept = 0, color="#E8EBE4", size=1, linetype="dotted")
gg<-gg + coord_flip()
#ajuster les axes
#gg<-gg + scale_y_continuous(labels = function(x) paste0(x*100, "%"), limits =c(0, 1))
#modifier la légende
gg<-gg + theme(legend.position="top",
        legend.title = element_blank(),
        legend.background = element_blank(),
        legend.key=element_blank(),
        legend.spacing.x = unit(0.5, 'cm'),
        legend.text= element_text(hjust =0.5,size= 12, colour = "#A9A9A9"))
gg<-gg + guides(fill = guide_legend(nrow = 1, reverse = TRUE))
#modifier le thème
gg<-gg +theme(panel.border = element_blank(),
              panel.background = element_rect(fill = "#292E1E", colour = "#292E1E"),
              plot.background = element_rect(fill = "#292E1E", colour = "#292E1E"),
              panel.grid.major.y= element_blank(),
              panel.grid.major.x= element_blank(),
              panel.grid.minor = element_blank(),
              axis.line.x = element_line(linetype = "solid", size=1, color="#E8EBE4"),
              axis.line.y = element_line(linetype = "solid", size=1, color="#E8EBE4"),
              axis.ticks.y = element_line(linetype = "solid", size=0.3, color="#E8EBE4"),
              axis.ticks.x = element_line(linetype = "solid", size=0.3, color="#E8EBE4"))
#ajouter les titres
gg<-gg + labs(title= NULL,
              subtitle=NULL,
              y="L'équart de l'équité de publication",
              x=NULL)
gg<-gg + theme(plot.title    = element_text(hjust=0,size=25, color="#E8EBE4"),
               plot.subtitle = element_text(hjust=0,size=18, color="#E8EBE4"),
               axis.title.y  = element_text(hjust=0.5, size=10, color="#E8EBE4", angle=90),
               axis.title.x  = element_text(hjust=0.5, size=10, color="#E8EBE4"),
               axis.text.y   = element_text(hjust=0.5, size=10, color="#E8EBE4"),
               axis.text.x   = element_text(hjust=0.5, size=10, color="#E8EBE4"))

Voici ce que ça donne:

Une réflexion sur “TyT2019|W16: Rang, histogramme ou autre??

  1. Pingback: Podcast ADV #6: Reprise de la 7e visualisation de Sara Leo | Johanie Fournier, agr.

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s