Introduction à la visualisation sous R avec le package ggplot2

ggplot 2 c’est LE package qu’il faut savoir utiliser pour faire de la visualisation sous R ! Ses possibilités sont quasi illimitées, c’est ce qui permet de faire des visualisations vraiment intéressantes pour explorer les données en détail, ou pour les présenter.

Il faut un peu d’investissement pour comprendre le fonctionnement de ce package, et connaître les fonctions qui le composent, mais cela en vaut vraiment la peine !

Le but de cet article est d’initier au package ggplot2 celles et ceux qui ne l’utilisent pas encore. Vous y trouverez le principe de fonctionnement, les lignes de commandes pour réaliser les visualisations classiques, et enfin des pistes pour aller plus loin.

Table des matières :

  • 1 Installation du package ggplot2
  • 2.Principe de fonctionnement du package ggplot2
    • 2.1 Définition de la couche canevas
    • 2.2 Définition du type de plot : geom_XXX
    • 2.3 Définition des options du graph
  • 3. Réaliser un scatterplot avec ggplot2
    • 3.1 Le scatterplot de base
    • 3.2 Définir des couleurs selon une variable
    • 3.3 Choisir d’autres couleurs
    • 3.4 Utiliser des formes de points différentes
    • 3.5 Gérer les formes des points
    • 3.6. Gérer la taille des points
    • 3.7. Ajouter une courbe ou droite de régression
  • 4.Réaliser un boxplot avec ggplot2
    • 4.1. Boxplot de base
    • 4.2 Ajouter les observations
    • 4.3 Donner une couleurs aux observations:
  • 5 Réaliser des barplot avec ggplot2
    • 5.1 Barplot de comptage
    • 5.2 Barplot en représentant un paramètre statistique
  • 6. Le facetting
  • 7. Retour sur la notion de mappage avec la fonction aes()
  • 8. Des choses en plus
    • 8.1 Les thèmes
    • 8.2 Les axes, titres et légende
  • 9 Comment trouver de l’aide et progresser ?

1 Installation du package ggplot2

Comme tout package, il faut commencer par l’importer. Pour cela il y a plusieurs solutions. Personnellement, j’utilise l’onglet package sous R Studio (dans la fenêtre en bas à droite), puis le sous onglet install :

package ggplot2

 

package ggplot2

 

Une fois que le package est installé, il faut le charger :

 

Une autre solution consiste à installer et à charger le package tidyverse, car ggplot2 est inclus dedans.

 

 

2.Principe de fonctionnement du package ggplot2

Le package ggplot2 fonctionne par couche successives. La première d’entre elles, est un peu le canevas du graph. Elle consiste à indiquer, dans quel jeu de données se trouve les données, et quelles sont les variables que l’on souhaite représenter. Ensuite, une seconde couche est ajoutée, elle consiste, par exemple, à indiquer le type de graph que l’on souhaite réaliser : scatterplot, boxplot, barplot etc… Viennent ensuite les couches d’affinage en quelque sorte, qui vont permettre de choisir les couleurs, les échelles des axes, les options de légende etc…

 

2.1 Définition de la couche canevas

Pour définir ce que j’appelle la couche canevas, on utilise la fonction “ggplot()” et son argument “aes().”. Les graphs construits avec ggplot2 commencent toujours par ce type de ligne de code :

 

Par exemple :

package ggplot2

 

Remarque : En plus de définir les variables qui seront utilisées dans le graph, la fonction aes() permet de réaliser un mappage. Cela signifie que ce qui est défini dans cette fonction est appliquée à toutes les couches qui composent le graph. Si c’est un peu obscure pour le moment, pas de panique ! J’y reviens plus en détail dans le paragraphe 7.

 

2.2 Définition du type de plot : geom_XXX

Il s’agit ensuite de définir le type de graph que l’on souhaite réaliser : un scatter plot, un boxplot, un barplot, etc… Pour cela, on rajoute un signe plus en bout de la première ligne (celle du canevas), et on ajoute une nouvelle ligne avec la fonction adéquate : geom_point() pour un scatter plot, geom_boxplot() pour un boxplot, geom_bar() pour un barplot etc…

package ggplot2

 

A ce stade, vous vous demandez sans doute comment faire pour connaître toutes les fonctions geom_XXX disponibles.

Et bien c’est assez simple : elles sont décrites dans la partie “Geoms” de la cheatsheet du package ggplot. Vous pouvez la télécharger automatiquement en allant dans l’onglet Help –> Cheatsheets –> Data Visualization with ggplot2.

 

 

 2.3 Définition des options du graph

Dans un troisième temps, on affine le graph, en précisant différentes couches concernant :

  • les échelles des axes : avec la fonctions scale_x_numeric(), par exemple
  • les couleurs : avec la fonction scale_colour_manual(), par exemple
  • les noms des axes, avec les fonctions xlab(), ylab(), par exemple
  • la légende avec, par exemple, avec la fonction theme(legend.position,=”bottom”)

 

Par exemple, pour passer l’axe des x dans l’échelle log, on ajoute la couche correspondante, grâce à la fonction coord_trans().

 

package ggplot2

Comme précédemment, toutes ces fonctions sont décrites dans la cheat sheet. Cette feuille contient beaucoup d’infos, alors au début on a un peu de mal à s’y retrouver. Mais en la regardant de plus près, vous verrez que les informations sont classées par type de couches : les commandes de base, les geoms, les options de scaling, de themes etc…

 

3. Réaliser un scatterplot avec ggplot2

3.1 Le scatterplot de base

Imaginons que l’on souhaite réaliser un scatter plot avec le jeu de données iris, en représentant la variable Sepal.Length en y et la variable Sepal.Width en x :

 

visualisation avec R ggplot2

3.2 Définir des couleurs selon une variable

Le jeu de données comporte, en réalité, trois espèces d’iris différentes (variable Species). Pour représenter les points avec une couleur différente par espèce, on va définir l’argument colour dans la fonction aes() de la partie “canevas” :

visualisation avec R et ggplot2

 

 3.3 Choisir d’autres couleurs

Pour choisir d’autres couleurs que celles appliquées par défaut, on utilise la fonction scale_colour_manual().

 

 

visualisation avec R ggplot2

 

Vous pouvez choisir facilement vos couleurs avec l’addin Colour Picker.

 

 3.4 Utiliser des formes de points différentes

Pour cela, on utilise l’argument shape dans aes() :

visualisation ggplot2

 

 

3.5 Choisir les formes des points

Pour cela, on utilise scale_shape_manual()

visualisation avec R graph ggplot2

 

Vous pouvez retrouver les différents types de points dans la cheat sheet, au niveau de la section “shape and size scales”.

 

3.6. Gérer la taille des points

On peut représenter les points avec des tailles différentes, par exemple en fonction de la valeur d’une variable. Pour cela, on utilise l’argument size dans aes().

visualisation ggplot2

 

 

3.7. Ajouter une courbe ou droite de régression

Pour cela on utilise la fonction geom_smooth(). Par défaut, c’est une courbe de régression locale (LOESS ) si n < 1000. Sinon c’est une courbe de modèle additif généralisé qui est employée.

 

visualisation avec R ggplot2

 

Il est possible d’obtenir une droite de régression, en ajoutant l’argument method=”lm”.

 

visualisation avec R package ggplot2

 

Il est aussi possible d’obtenir une droite par espèce, en utilisant l’argument group dans la fonction aes() de la première ligne.

droite de régression

 

Et pour que les droites aient la même couleur que les points auxquels elles se rattachent, il faut supprimer l’argument de couleur dans le geom_smooth. Comme cela, la couleur est “mappée” pour la couche geom_point() et geom_smooth(). Vous retrouverez plus de détails sur lemappage dans le paragraphe 7.

 

 

4 Réaliser un boxplot avec ggplot 2

4.1. Boxplot de base

Imaginons que l’on souhaite réaliser un boxplot de la variable Sepal.Length, par espèce. Pour cela, on utilise la fonction geom_boxplot().

 

boxplot avec ggplot2 et R

 

Pour utiliser des couleurs dans les boites, ici on utilise l’argument fill et non colour, dans la fonction aes(), car il s’agit de “remplir” les boites :

 

 

boxplot ggplot2 R

4.2 Ajouter les observations

Pour ajouter les observations, on utilise la couche geom_jitter().

 

boxplot avec R et les points

Remarque : on peut diminuer l’étendue des points en largeur, avec l’argument width=0.25 dans le geom_jitter().

4.3 Donner une couleurs aux observations :

Pour ajouter des couleurs aux points, cette fois, on utilise l’argument colour dans aes(). On peut aussi réduire l’intensité de la couleur des boxplots en utilisant l’argument alpha.

boxplot avec les points ggplot2

 

5 Réaliser des barplot avec ggplot2

Il existe deux types de barplot réalisables avec ggplot 2. Les premiers, que j’appelle “barplot de comptage“, permettent de représenter un nombre de données dans chaque modalité d’une variable.

La seconde catégorie consiste a représenter un paramètre statistique comme une moyenne. Personnellement je suis complètement opposée ce type de graph, car ils ne permettent pas de visualiser le nombre de données, ni leur répartition, ni de la présence éventuelle d’outliers ! Dans cette situation il est préférable de faire un boxplot (surtout qu’il est possible d’y faire figurer la moyenne en plus de la médiane).

Dans tous les cas, on utilise la fonction geom_bar().

 

5.1 Barplot de comptage

En utilisant le jeu de données “mtcars”, imaginons, par exemple, que je veuille représenter le nombre de voitures ayant 3,4 ou 5 vitesses (variables gear) :

barplot avec R

 

Remarque :J’utilise ici factor(gear) car cette variable est considérée comme une variable numérique.

Pour ajouter des couleurs aux barres, comme précédemment, j’utilise l’argument fill et j’indique quelle variable doit être considérée :

ggplot2 R visualisation

 

Pour représenter le nombre de données par vitesse, en fonction d’une autre variable (ici le nombre de carburateurs), il suffit de l’indiquer dans l’argument fill :

barplot avec ggplot2

 

On peut encore ramener la somme des comptages à 1, autrement dit de représenter les comptages sous la forme de pourcentages. Pour cela, on utilise l’argument position=”fill” :

 

ggplot2 R

 

Il est également possible de représenter ces données avec un autre positionnement, en utilisant l’option dodge.

barplot avec R ggplot2 visualisation

 

 

Pour changer les couleurs on utilise la couche scale_fill_manual() et non plus scale_colour_manual() car ce sont des zones entières qui sont concernées.

 

visualisation avec R

 

 5.2 Barplot en représentant un paramètre statistique

Par exemple, ici je vais représenter les moyennes de la variable mpg (miles per gallon) pour tous les croisements des modalités des variables gear (nombre de vitesses) et carb (nombre de carburateurs). Pour cela, il est nécessaire de fournir à la fonction ggplot, un jeu de données comportant ces moyennes. Une façon très simple de les obtenir est d’utiliser la fonction summarySE() du package Rmisc.

 

Certaines combinaisons, par exemple 5 vitesses et 8 carburateurs ne sont pas présent dans le jeu de données, c’est pour cela que la table générée comporte des NA.

La représentation des moyennes plutôt que le nombre de données est possible en employant l’argument stat=”identity” dans la fonction geom_bar().

barplot visualisation ggplot2 package

 

Il est ensuite facile d’ajouter les intervalles de confiance des moyennes avec la fonction geom_errorbar, comme ceci :

intervalle de confiance

 

 

Vous trouverez plus d’options sur cette page

6. Le facetting

C’est une des grandes possibilités de ggplot2. Ca consiste à sous diviser un graph, selon les modalités d’une ou plusieurs variables.

Ici par exemple, je vais utiliser le jeu de données Melanoma du package MASS, et je vais étudier les relations entre la variable thickness et time, pour chacune des modalités de la variable status :

 

 

facet

 

La division peut également être faite en fonction de deux variables :

 

facet

 

Le facetting se réalise à l’aide des fonctions facet_grid() et facet_wrap().

 

 

7. Retour sur la notion de mappage avec la fonction aes

Ici par exemple, j’utilise l’argument colour = Species dans la fonction aes(). Cela à pour conséquence de donner une couleur au points et aux contours des boites en fonction des modalités de la variable Species. On dit alors qu’il y a un mappage : la manière dont la couleur des boites et des points est en quelque sorte exporter pour toutes les couches.

visualisation ggplot2

 

Si en revanche, je souhaite fixer la couleur pour une couche donnée, et bien, je dois l’indiquer dans l’argument colour de la couche considérée. Ici par exemple, je décide d’utiliser une seule et unique couleur magenta pour tous les points. J’utilise donc l’argument colour dans la couche geom_jitter :

 

ggplot 2

8. Deux trois petites choses  en plus

8.1 Les thèmes

Il existe également des thèmes de graphs :

ggplot2 R visualisation

 

 

Il existe même un thème pour les nostalgiques d’Excel ! C’est juste pour rire, on est bien d’accord ?

 

ggplot2 thème

 

8.2 Les axes, titres et légende

Vous pouvez donner un titre à votre graph avec la fonction ggtitle(), puis renommer les axes avec ylab() et xlab(). La position de la légende se gère avec theme(legend.position=” “).

 

titre ggplot2

 

 

9 Comment trouver de l’aide et progresser ?

  • Les ressources francophones sur le package ggplot2 sont rares. Néanmoins vous trouverez beaucoup d’infos et d’exemples dans le chapitre 8 de l’introduction au tidyverse, de Julien Barnier.
  • Utiliser la cheat sheet : elle contient beaucoup d’infos !
  • Utiliser l’aide sur les fonctions : par exemple ?geom_text()
  • Si vous chercher un livre, je vous conseille de R Graphics Cookbook de Winston Chang:

  • Ecrire votre question en anglais dans google / stackoverflow

 

J’espère que cette introduction au package ggplot2 vous aura convaincu de son utilité, et vous aura permis de faire vos premières visualisations.

Si cet article vous a été utile, n’oubliez pas de le partager 😉

 

Retrouvez ici d’autres articles en lien avec le package ggplot2:

 

Note : Je touche une petite commission (entre 3 et 6%) si vous passez par les liens Amazon de cet article pour acheter les livres mentionnés. cela m’aide à entretenir ce blog, merci si vous le faites ! 😉

Partager l'article
  •  
  •  
  •  
  •  
  •  
    13
    Partages
  • 13
  •  
  •  
  •  
  •  

5 commentaires

  1. Guefassa Youcef Répondre

    Bonjour,
    je voudrai dire que j’ai utilisé le package ggplot 2 pour faire la visualisation de mes données dans un séminaire internationale à Alger (1-3 octobre2018). grâce à vous j’ai pu attirer l’attention de plusieurs participants vers cette visualisation et j’ai essayé de les orienter vers votre blog.
    merc infiniment

    • Claire Della Vedova Auteur de l’articleRépondre

      Merci Youcef, je suis ravie si cet article vous a aidé.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *