Programmer en R/Comprendre la grammaire des graphiques


En R, il existe un système de graphique standard autour de la fonction plot() et la bibliothèque ("librairie" - library) ggplot2. Cette bibliothèque ggplot2 repose sur les principes de la grammaire des graphiques[1]. L'idée principale est de concevoir un graphique comme une succession de couches (layer). Chaque couche définit une correspondance entre certaines variables ou leur transformation statistique et les attributs esthétiques (position dans l'espace, couleur, épaisseur, etc) de formes géométriques définies (points, barres, lignes, tuiles, etc).

  • En pratique, il faut créer le graphique avec la fonction ggplot().

Consultez également ces pages dans d’autres projets Wikimedia :

Article encyclopédique sur Wikipédia.
  • Ensuite définir les différentes couches avec les fonctions geom_ (geom_point(), geom_bar, geom_line(), etc) ou stat_ (stat_density(), stat_count(), etc). Pour chacune de ses fonctions, l'argument mapping et la fonction aes() permettent de définir la correspondance entre des variables et les attributs esthétiques.
  • Puis spécifier les échelles avec les fonctions scale_.
  • le contexte (titre, sous-titre, caption, etc) avec la fonction labs().

L'utilisateur peut choisir un thème choisi à partir d'une liste de thèmes prédéfinis (theme_tufte(), theme_stata(), etc) ou avec la fonction theme().

Il est aussi possible de réaliser le graphe sur des sous-échantillons du jeu de données avec les fonctions facet_().

Particularité de la grammaire des graphiques, l'opérateur "pipe" est +. La bibliothèque ggplot2 a été introduite en 2009, avant l'introduction du système des pipes dans le langage R.

Pré-requis modifier

Dans cette section, l'exemple utilise la base de données des députés déjà utilisée auparavant, en travaillant avec la bibliothèque ggplot2.

library(dplyr)
library(ggplot2)
library(readr)
table_deputes <- read_csv("data/table_deputes.csv")

Choix de la géométrie modifier

Pour réaliser un diagramme en barres, on utilise la géométrie geom_bar(). Ici, on associe à l'axe des abscisses le genre et on associe la statistique de comptage au genre.

table_deputes %>% 
  ggplot() + 
  geom_bar(
    mapping = aes(x = genre), 
    stat = "count"
      )

On peut aussi préciser les échelles, le titre, le sous-titre, etc.

table_deputes %>% 
  ggplot() + 
  geom_bar(
    mapping = aes(x = genre, fill = genre), 
    stat = "count"
  ) + 
  scale_x_discrete(name = "Genre") + 
  scale_y_continuous(name = "Nombre de députés") + 
  scale_fill_discrete() + 
  labs(
    title = "Répartition des députés par genre", 
    subtitle = "Période 2012-2017",
    caption = "Source : Liste des députés publiés par Wikimédia France sur data.gouv.fr"
    )

Notes et références modifier

  1. http://r4ds.had.co.nz/data-visualisation.html

Voir aussi modifier

  • Hadley Wickham, « A Layered Grammar of Graphics », Journal of Computational and Graphical Statistics, vol. 19, no. 1, pp. 3–28, 2010.