Introduction à la visualisation des données avec R

De EduTech Wiki
Aller à la navigation Aller à la recherche

Cet article est en construction: un auteur est en train de le modifier.

En principe, le ou les auteurs en question devraient bientôt présenter une meilleure version.



Introduction

L'une des utilisations les plus fréquentes de R concerne la création de visualizations des données à différents niveaux de complexité et pour différents objectifs. Notamment, on peut diviser les visualizations des données en deux grandes catégories :

  • Visualizations exploratoires, dont la finalité consiste principalement à mieux comprendre des données ;
  • Visualizations communicationnelles, dont la finalité est de synthétiser les résultats dans une forme graphique qui permet aux lecteurs de mieux les comprendre par rapport à des formes alternatives (e.g. texte ou tableau).

La flexibilité de R fait ainsi qu'on puisse utiliser les mêmes principes et outils pour les deux finalités et, de plus, d'intégrer directement les visualizations des données dans un flux de travail plus large, incluant notamment la génération de report scientifiques (voir à ce propos Introduction à Rmarkdown).

Prérequis

Aucune connaissance préalable n'est nécessaire pour suivre le contenu de cet article. Cependant, pour maximiser sa compréhension et la possibilité d'appliquer directement les éléments traités, les articles suivants peuvent être très utils :

De plus, même si les exemples proposés dans la page peuvent être reproduit dans tout environnement qui supporte R, l'utilisation de RStudio est conseillée, voir à ce propos :

Générer des visualizations des données avec du code

Il existe plusieurs possibilités pour générer des visualizations des données, comme par exemple en utilisant un logiciel d'analyse statistique (e.g. SPSS ou Jamovi), un logiciel de type spreadsheet (e.g. Excel), ou encore un logiciel consacré précisément à cette démarche (e.g. Tableau Software). L'utilisation de R dans ce contexte présente les avantages en termes de flexibilité, adaptabilité et réutilisation du code. Dans cette section, nous aborderons brièvement cet aspect : comment générer des visualizations de données avec du code ?

Fonctions graphiques

Le principe est assez simple une fois qu'on comprend la logique plus étendue d'un langage de programmation (voir Introduction conceptuelle à R) : il existe des procédures (ou fonctions) qui transforment des données en représentations graphiques. Voyons tout de suite un exemple de base :

1 # Générer aléatoirement 100 chiffres entre 1 et 100
2 simulated_data <- sample(1:10, size = 100, replace = TRUE)
3 
4 # Les afficher en histogramme
5 hist(simulated_data)

Ce code fait deux choses :

  1. À la ligne 2, nous créons 100 chiffres aléatoires entre 1 et 10 et nous les stockons avec la référence symbolique simulated_data
  2. À la ligne 4, nous utilisons la fonction hist() en lui passant en argument nos données à travers la référence symboliqueque nous venons de créer : hist(simulated_data)

Le résultat (qui s'affiche dans le tab Plot si vous utilisez RStudio) sera similaire à l'image suivante :

Simple histogramme avec R

Utiliser des arguments pour adapter le graphique

Le principe de base vu dans le point précédent peut être complexifié en utilisant d'autres arguments dans la fonction qui permettent d'adapter le graphique selon les besoins :

1 # Adapter le graphique avec des arguments
2 hist(
3   simulated_data,
4   main = "Simulation de 100 données entre 1 et 10",
5   xlab = "Données simulées",
6   ylab = "Nombre d'occurence",
7   col = "lightblue",
8 )

La fonction hist() est la même, ainsi que son premier argument simulated_data. La fonction accepte également d'autres arguments, comme par exemple :

  1. Ligne 4 main = "Simulation de 100 données entre 1 et 10" modifie le titre du graphique
  2. Lignes 5 et 6 modifient respectivement la labellisation des axes x et y
  3. Ligne 7 col = "lightblue" modifie la couleur des colonnes du histogramme

Le résultat sera similaire à l'image suivante :

Histogramme avec définition de quelques options

Complexification du principe de base

R permet de créer une énorme variété de représentations graphiques, du simple au très complexe, que ce soit à travers des fonctions disponibles dans les paquets de base ou à travers des paquets externes. Dans tous les cas, il s'agit d'une complexification de cet exemple de base. Dès que les visualisations deviennent plus complexes, la création du code devient également plus articulée, ce qui requiert un effort de mémorisation (ou une référence à portée de main) pour se rappeler des noms de fonctions et arguments nécessaires. Néanmoins, cette approche permet une plus grande flexibilité ainsi que la possibilité de réutiliser ou adapter le code pour créer plusieurs représentations graphiques.

Nous pouvons par exemple complexifier l'exemple de base de la manière suivante :

 1 # Générer aléatoirement 100 chiffres entre 1 et 100
 2 simulated_data <- sample(1:10, size = 100, replace = TRUE)
 3 
 4 # Adapter le graphique avec des arguments
 5 hist(
 6   simulated_data,
 7   main = "Simulation de 100 données entre 1 et 10",
 8   xlab = "Données simulées",
 9   ylab = "Nombre d'occurence",
10   col = "lightblue",
11 )
12 
13 # Ajouter une ligne horizontale avec une valeur de 10
14 abline(h = 10, col="red", lwd=3, lty=2)
15 
16 # Ajouter une légende correspondante
17 legend(
18   x = "topright", 
19   c("Limite de 10"),
20   col = c("red"),
21   lwd = c(3),
22   lty = c(2)
23 )

Nous avons apporté les modifications suivantes :

  • À la ligne 14, avec la fonction abline(), nous avons ajouté une ligne horizontale en correspondance de la valeur 10. Cette ligne a des arguments qui en détermine la couleur col, la largeur lwd, et le type de trait lty;
  • De la ligne 17 à 23, nous avons ajouté une légende, avec certains arguments (en forme de vecteurs cette fois-ci) qui reprennent les arguments de la ligne horizontale.

Le résultat sera similaire à l'image suivante :

Histogramme avec fonctions supplémentaires

Comme vous pouvez le noter, certains arguments ne sont pas très saillants (e.g. lwd ou lty) et de plus ils sont associés à des chiffres. Il faudrait donc se souvenir à quel type de trait correspond le chiffre 1, le chiffre 2, etc.

D'autre côté, le fait qu'on puisse générer des graphiques à travers des fonctions permet de combiner les éléments de manière différente, par exemple à l'intérieur d'un paquet qui développe une syntaxe homogène. C'est le cas du paquet ggplot2 que nous introduisons dans la suite de cet article.

ggplot2

Dans la suite de cet article, nous allons nous focaliser sur un paquet spécifique, appelé ggplot2, qui fait partie de l'écosystème Tidyverse.