library(learnr)
knitr::opts_chunk$set(echo = FALSE)
library(ggplot2)
library(ggpubr)
data("fruits", package = "tidyViz")
couleurs <- c("steelblue", "limegreen", "darkolivegreen", "darkorchid")

Le package ggplot2 permet de réaliser facilement des graphiques avec une syntaxe unifiée. Dans ce tutoriel, nous allons nous entraîner avec les données "fruits".

Commande de base

La commande de base aura l'allure suivante

ggplot(data, aes(x, y)) + geom_****()

Dans ce tuto, nous verrons les fonctions suivantes :

Fonction | Utilité ---------|--------- geom_bar, geom_col | Diagrammes en bâtons geom_point, geom_jitter | Nuages de points geom_line | Dessins de lignes geom_histogram | Histogrammes geom_boxplot | Boites à moustaches geom_density | Densités geom_violin | Diagrammes en violon

Tout en faisant les exercices, familiarisez vous avec la documentation de ggplot2 : https://ggplot2.tidyverse.org/

Les données fruits

Les données contenues dans la table fruits contiennent les données nutritionnelle de r nrow(fruits) fruits ou aliments à base de fruits. La table est reportée ci-après.

DT::datatable(fruits)

La colonne "groupe" correspond au "sous-groupes" définies dans la table Ciqual.

Pour plus d'informations, rendez vous sur le site du Ciqual (https://ciqual.anses.fr/) ou sur sur la plateforme ouverte des données publiques françaises.

Representer une variable discrete

Complétez la commande suivante pour obtenir un diagramme en bâtons des groupes de fruits.

ggplot( ) + geom_
ggplot(fruits, aes(groupe)) + geom_bar()

Changez les couleurs et le thème du graphe en complétant la prochaine commande.

ggplot( , aes(fill = )) + 
   geom_ + 
   theme_
ggplot(fruits , aes(groupe, fill = groupe)) + 
   geom_bar() + 
   theme_bw()

Utilisez la fonction cut de la façon suivante pour transformer la variable Phosphore (continue) en une variable qualitative.

cut(fruits$Phosphore, c(0, 0.2, 2))
# Il n'y a rien de plus à faire : exécutez juste la commande et observez son résultat
cut(fruits$Phosphore, c(0, 0.2, 2))
# Si vous le souhaitez, vous pouvez utiliser la fonction table sur ce résultat
table(cut(fruits$Phosphore, c(0, 0.2, 2)))

Remarquez comme on peut utiliser cette astuce dans un graphe !

ggplot(fruits, aes(cut(Phosphore, c(0, 0.2, 10)))) +
  geom_bar() + 
  theme_bw()

Ce n'est pas très joli comme commande et un peu difficile a lire. Parfois, plutôt que d'imbriquer les commandes, il vaut mieux créer une nouvelle variable et utiliser cette nouvelle variable dans la commande graphique.

Representer une variable continue

Complétez la fonction suivante pour réaliser un boxplot de la variable Energie.

ggplot(fruits) + geom
ggplot(fruits, aes(Energie)) + 
  geom_boxplot() + 
  theme_bw()

Sur le même modèle, faites un diagramme en violon.

ggplot(fruits) + geom
ggplot(fruits, aes(x = Energie, y = 0)) + 
  geom_violin() + 
  theme_bw()

Superposez les deux et ajustez les paramètres de largeur et de couleur pour avoir un joli graphe.

ggplot(fruits) + 
  geom_violin() +
  geom_boxplot()
## Utilisez la fonction theme
### - sur l'élément axis.text.y
### - et sur l'élément axis.ticks.y
### - que vous devrez transformer en element_blank()
ggplot(fruits, aes(x = Energie, y = 0)) + 
  geom_violin(color = NA, fill = "limegreen") + 
  geom_boxplot(width = 0.1, color = "steelblue", fill = "lightgreen", size = 1) + 
  theme_bw() + 
  labs(x = "", y = "Energie (kJ/100 g)") +    
  theme(axis.text.y = element_blank(),
        axis.ticks.y = element_blank())

Faites maintenant un histogramme de la composition en Vitamine C.

ggplot(fruits) + 
  geom
ggplot(fruits, aes(VitamineC)) + 
  geom_histogram(breaks = seq(0, 90, 10), color = "white", fill = "gold") + 
  theme_bw() + 
  labs(x = "Vitamine C (mg/100 g)", y = "Nb. d'occurences")

Représenter sur le même graphe une variable qualitative et une variable quantitative

Exécutez la commande suivante puis modifiez la pour faire en sorte que chaque boite soit d'une couleur différente.

ggplot(fruits, aes(groupe, Sucres)) + geom_boxplot()
ggplot(fruits, aes(groupe, Sucres, color = groupe)) + 
  geom_boxplot() + 
  theme_bw() + 
  coord_flip() +
  labs(x = "", y = "Sucres (g/100 g)", color = "")

J'ai sélectionné 4 couleurs pour vous, et utilisé la commande suivante pour les stocker dans un vecteur s'appelant couleurs.

couleurs <- c("steelblue", "limegreen", "darkolivegreen", "darkorchid")

Ce vecteur est utilisé ci-dessous. Exécutez ce code et observez le résultat. Essayez ensuite d'autres couleurs de votre choix : utilisez des noms de couleur (voir le résultat de la fonction colors()) ou des codes hexadécimaux.

couleurs <- c("steelblue", "limegreen", "darkolivegreen", "darkorchid")
ggplot(fruits, aes(Fibres, groupe, fill = groupe)) + 
  geom_violin() + 
  scale_fill_manual(values = couleurs)

Representer un nuage de points

Complétez la commande suivante pour représenter l'énergie en fonction de la teneur en Vitamine C des fruits.

ggplot() + geom
ggplot(fruits, aes(VitamineC, Energie)) +
  geom_point() + 
  theme_bw() + 
  labs(x = "Energie (kJ / 100g)", y = "Vitamine C Vitamine C (mg/100 g)")

Coloriez les points, d'abord avec la variable Sucres puis avec la variable Groupes. Que Remarquez vous ?

ggplot() + geom
ggplot(fruits, aes(VitamineC, Energie, color = Sucres)) +
  geom_point() + 
  theme_bw() + 
  labs(x = "Energie (kJ / 100g)", y = "Vitamine C Vitamine C (mg/100 g)")

ggplot(fruits, aes(VitamineC, Energie, color = groupe)) +
  geom_point() + 
  theme_bw() + 
  labs(x = "Energie (kJ / 100g)", y = "Vitamine C Vitamine C (mg/100 g)")

Vous pouvez changer des couleurs définies sur une variable quantitative avec la fonction scale_color_continuous, ou scale_color_gradient, ou scale_color_gradientn, ou des couleurs définies sur une variable discrète avec la fonction scale_color_manual ou scale_colour_brewer. Testez ces fonctions sur l'exemple précédent.

Combiner des graphes

Les fonctionnalités du package ggpubr permettent, entre autres, de combiner des graphes à partir d'objets ggplot.

Remarque : d'autres package existent pour combiner des objets ggplot en graphes complexes, comme cowplot, gridExtra ou patchwork, ce qui témoigne du succès de ggplot2.

Exécutez les commandes suivantes et observez comment elles permettent la création d'un graphe complexe en plusieurs panneaux.

library(ggpubr)
theme_set(theme_bw())

# boxplots
bxp <- ggplot(fruits, aes(groupe, Sucres, color = groupe)) + geom_boxplot()
# jitter plots
jp <- ggplot(fruits, aes(x = groupe, y = Sucres, color = groupe)) + geom_jitter()
# violin plots
vp <- ggplot(fruits, aes(groupe, Sucres, color = groupe, fill = groupe)) + geom_violin() 
# violin plots
dens <- ggplot(fruits, aes(Sucres, fill = groupe)) + geom_density() 

# Arrange
ggarrange(bxp, jp, vp, dens, ncol = 2, nrow = 2,  common.legend = TRUE, legend = "bottom") 

Voici les arguments clefs de la fonction ggarrange. N'oubliez pas que vous pouvez accéder à ces informations et bien plus en appelant le fichier d'aide de la fonction grâce à la commande ?ggarrange.

Argument | Utilité ----------|-------- ncol | Nombre de colonnes de la grille de graphes. nrow | Nombre de lignes de la grille de graphes. widths | Vecteur des largeurs des graphes. heights | Vecteur des hauteurs des graphes. legend | Chaîne de caractère spécifiant la position de la légende ("top", "bottom", "left" ou "right"). Pour supprimer la légende, utilisez "none". common.legend | Valeur logique. La valeur par défaut est FALSE. Si TRUE, une légende unique commune sera créée.



vguillemot/tidyViz documentation built on Dec. 23, 2021, 3:09 p.m.