Ateliers R Trucs et Astuces

Introduction à R et représentation graphiques sous ggplot2

Raphaël Royauté, Lucie Martin, Pierre-Antoine Précigout, Sébastien Saint-Jean

INRAE UMR EcoSys

1/4/24

Organisation
Utilisation générale
Créer son projet
Importer des données
Graphiques avec ggplot2 et `palmerpenguins

Utilisation générale

Packages nécessaires

  • tidyverse
  • palmerpenguins
install.packages(c("tidyverse", "palmerpenguins")) # télécharger les packages
library(tidyverse); library(palmerpenguins) # Importer les packages

Utilisation générale

Le langage R en (très) bref

  • Déclaration de variables
a <- 10
b <- 18
a / b
[1] 0.5555556

Utilisation générale

Le langage R en (très) bref

  • Vecteurs et matrices
Vecteur <- c(1, 2, 3)
Matrice <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), 
                  byrow = T, nrow = 3, ncol = 3)
Vecteur; Matrice
[1] 1 2 3
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9

Utilisation générale

Le langage R en (très) bref

  • Boucles
Code
n <- 10
y <- c() # vecteur vide
x <- c() # vecteur vide
for (i in 1:n) { # Pour i allant de 1 à n
  x[i] <- runif(1, 1, 5) # Tirer un nombre entre 1 et 5
  y[i] <- a * x[i] + b # Calculer y à chaque itération i
}
plot(x,y) # Visualiser

Utilisation générale

Le langage R en (très) bref

  • Fonctions
Code
# Générer des données simulées
fonction_data <- function(n1, n2, m1, m2, s1, s2) {
  # n1: taille d'échantillon contôle
  # n2: taille d'échantillon traité
  # m1: moyenne échantillon contôle
  # m2: moyenne échantillon traité
  # s1: écart type échantillon contôle
  # s2: écart type échantillon traité
  
  ctrl <- rnorm(n1, m1, s1) # Simuler échantillon contôle
  trt <- rnorm(n2, m2, s2) # Simuler échantillon traité
  df <- data.frame(Trt = c(rep("Ctrl", n1), 
                           rep("Trt", n2)),
                   Activity = c(ctrl, trt)) # Stocker les données
  return(df)
}
dsim <- fonction_data(50, 50, 50, 30, 5, 3) # Appeler la fonction
hist(dsim$Activity) # Visualiser

Utilisation générale

Le langage R en (très) bref

  • Dataframes
    • Classe d’objet très fréquemment utilisée
    • Permet de combiner différentes classes de données
    • Numérique, caractères, facteurs
    • Permet d’importer des données externes dans R
str(dsim)
'data.frame':   100 obs. of  2 variables:
 $ Trt     : chr  "Ctrl" "Ctrl" "Ctrl" "Ctrl" ...
 $ Activity: num  52.2 47.7 54.1 49.3 44.4 ...

Créer son projet

  • File -> New Project
  • Outil de gestion de projet très puissant et intuitif
  • Permet organisation des fichiers, scripts et sorties
  • Chemins d’accès relatifs

Importer des données

df <- read.csv(file = "mon_fichier.csv", 
               header = T, # Conserver le nom des variables
               sep = ";", # Séparateur de colonnes
               dec = ",") # Décimales '.' ou ',' dans feuille de calcul

Exercice 1: Manipuler les données

  • Importez les fichiers data_virg & data_tab
  • Séléctionnez la colonne Treatment avec df$
  • Séléctionnez les mâles de la phase post-treatment avec df[,]
  • Séléctionnez les mâles de la population post-treatment avec filter
  • Créez une nouvelle colonne log(Activity)
  • Comparez l’activité mâle vs. femelles en phase post-traitement avec boxplot()

Exporter des données transformées

  • commande write.csv()
  • indiquer chemin d’accès pour sauvegarder path = "data/data-clean/data_clean.csv"

Graphiques avec ggplot2 et palmerpenguins

Anatomie d’un ggplot

Elements principaux

Elément/Fonction Explication
ggplot() Fonction principale
aes() aesthetics: contrôle les éléments du graphique (x, y, colour, fill, shape, size)
geom_() Contrôle les éléments graphiques (points, boxplot, density, … )
theme() Customization de l’apparence du graphique

Anatomie d’un ggplot

Graphique simple

library(palmerpenguins); library(tidyverse)

ggplot(penguins, 
       aes(y = body_mass_g, x = species)) +
  geom_boxplot() 

Anatomie d’un ggplot

Customisation

Code
library(palmerpenguins); library(tidyverse)

ggplot(penguins, 
       aes(y = body_mass_g, x = species)) +
  geom_boxplot(aes(fill = species)) +
  geom_jitter(alpha = .6, size = 2.5, width = .2, color = "black") +
  facet_wrap(~sex) +
  labs(y = "Masse (g)", x = "Espèce") +
  theme_bw(14)

Exercice 2 : Graphique complexe

  • Représentez la taille des ailes en fonction de la masse par espèces
  • Ailes = “flipper”
  • Subdivisez par le sexe des individus
  • Retirer les individus de sexe inconnu

Astuces

  • Google est votre ami !
  • Est-ce qu’il existe pas une fonction qui retire les valeures NA ?

Exercice 2 : Graphique complexe

Solution

Code
penguins %>% 
  drop_na(sex) %>% 
  ggplot(aes(y = body_mass_g, x = flipper_length_mm, color = species)) +
  geom_point(alpha = .6, size = 2.5) +
  facet_wrap(~sex) +
  labs(y = "Masse (g)", x = "Ailes (mm)") +
  theme_bw(14)

Exercice 3 : Lâchez-vous !

Resources