Visualisation des Données à l'Aide de GGPlot2

GGPLOT Barres d’Erreur

Les barres d’erreur sont utilisées pour visualiser la variabilité des données tracées. Des barres d’erreur peuvent être appliquées à des graphiques tels que des dot plots, des bar plots ou des line plots, afin de fournir une couche supplémentaire de détails sur les données présentées.

Généralement, les barres d’erreur sont utilisées pour montrer soit l’écart-type, l’erreur-type, les intervalles de confiance ou l’écart interquartile.

La longueur d’une barre d’erreur permet de révéler l’incertitude d’un point de données : une barre d’erreur courte indique que les valeurs sont concentrées, indiquant que la valeur moyenne tracée est plus probable, tandis qu’une barre d’erreur longue indique que les valeurs sont plus dispersées et moins fiables.

Cet article décrit comment ajouter des barres d’erreur dans un graphique en utilisant le package ggplot2 dans R. Vous apprendrez comment créer des bar plots et des line plots avec des barres d’erreur



Sommaire:

Livre Apparenté

GGPLOT2 - L’Essentiel pour une Visualisation Magnifique des Données dans R

Chargement des packages R requis

Chargez le package ggplot2 et mettez le thème par défaut à theme_classic() avec la légende en haut du graphique:

library(ggplot2)
theme_set(
  theme_classic() +
    theme(legend.position = "top")
  )

Préparation des données

  • Préparer les données : Jeu de données sur la croissance des dents.
df <- ToothGrowth
df$dose <- as.factor(df$dose)
head(df, 3)
##    len supp dose
## 1  4.2   VC  0.5
## 2 11.5   VC  0.5
## 3  7.3   VC  0.5
  • Calculer des statistiques descriptives pour la variable len organisée en groupes par la variable dose:
library(dplyr)
df.summary <- df %>%
  group_by(dose) %>%
  summarise(
    sd = sd(len, na.rm = TRUE),
    len = mean(len)
  )
df.summary
## # A tibble: 3 x 3
##   dose     sd   len
##   <fct> <dbl> <dbl>
## 1 0.5    4.50  10.6
## 2 1      4.42  19.7
## 3 2      3.77  26.1

Fonctions R clés et types de barre d’erreurs

Fonctions clés pour créer des barres d’erreur en utilisant les données statistiques descriptives:

  • geom_crossbar() pour le crossbar avec le milieu indiqué par une ligne horizontale
  • geom_errorbar() pour les barres d’erreur
  • geom_errorbarh() pour les barres d’erreur horizontales
  • geom_linerange() pour dessiner un intervalle représenté par une ligne verticale
  • geom_pointrange() pour créer un intervalle représenté par une ligne verticale, avec un point au milieu.

Commencez par initialiser ggplot avec les données statistiques descriptives:

  • Spécifiez x et y comme d’habitude
  • Spécifiez ymin = len-sd et ymax = len+sd pour ajouter des barres d’erreur inférieures et supérieures. Si vous voulez seulement ajouter des barres d’erreur supérieures mais pas les barres inférieures, utilisez ymin = len (au lieu de len-sd) et ymax = len+sd.
# Initialiser ggplot avec des données
f <- ggplot(
  df.summary, 
  aes(x = dose, y = len, ymin = len-sd, ymax = len+sd)
  )

Diagrammes d’erreurs possibles:

Barres d’erreur basiques

Créer des diagrammes d’erreurs simples:

# Ligne verticale avec un point au milieu
f + geom_pointrange()

# Barres d'erreur standard
f + geom_errorbar(width = 0.2) +
  geom_point(size = 1.5)

Créer des barres d’erreur horizontales. Mettre dose sur l’axe des y et len sur l’axe des x. Précisez xmin et xmax.

# Barres d'erreur horizontales avec points moyens
# Modifier la couleur par groupes
ggplot(df.summary, aes(x = len, y = dose, xmin = len-sd, xmax = len+sd)) +
  geom_point() +
  geom_errorbarh(height=.2)

  • Ajoutez des points jitter (représentant des points individuels), des dot plots et des violin plots. Pour cela, vous devez initialiser ggplot avec les données d’origine (df) et spécifier les données df.summary dans la fonction de création de barres d’erreur, ici geom_pointrange().
# Combiner avec des points jitter
ggplot(df, aes(dose, len)) +
  geom_jitter(position = position_jitter(0.2), color = "darkgray") + 
  geom_pointrange(aes(ymin = len-sd, ymax = len+sd),data = df.summary)

# Combiner avec des violin plots
ggplot(df, aes(dose, len)) +
  geom_violin(color = "darkgray", trim = FALSE) + 
  geom_pointrange(aes(ymin = len-sd, ymax = len+sd), data = df.summary)

  • Créez des line/bar plots basiques de la moyenne +/- erreur. Nous n’avons donc besoin que des données df.summary. :
    1. Ajoutez les barres d’erreur inférieures et supérieures pour le line plot : ymin = len-sd et ymax = len+sd.
    2. Ajoutez seulement les barres d’erreur supérieures pour le bar plot : ymin = len (au lieu de len-sd) et ymax = len+sd.

Notez que, pour un line plot, vous devez toujours spécifier groupe = 1 dans aes(), lorsque vous avez un groupe de ligne.

# (1) Line plot
ggplot(df.summary, aes(dose, len)) +
  geom_line(aes(group = 1)) +
  geom_errorbar( aes(ymin = len-sd, ymax = len+sd),width = 0.2) +
  geom_point(size = 2)

# (2) Bar plot
ggplot(df.summary, aes(dose, len)) +
  geom_col(fill = "lightgray", color = "black") +
  geom_errorbar(aes(ymin = len, ymax = len+sd), width = 0.2) 

Pour le line plot, vous pouvez traiter l’axe des abscisses comme une ligne numérique :

df.sum2 <- df.summary
df.sum2$dose <- as.numeric(df.sum2$dose)
ggplot(df.sum2, aes(dose, len)) +
  geom_line() +
  geom_errorbar( aes(ymin = len-sd, ymax = len+sd),width = 0.2) +
  geom_point(size = 2)

  • Bar plots et line plots + points jitter. Nous avons besoin des données originales df pour les points jitter et des données df.summary pour les autres couches geom.
    1. Pour le line plot : Tout d’abord, ajoutez des points jitter, puis ajoutez des lignes + barres d’erreur + points moyens sur les points individuels.
    2. Pour le bar plot : Tout d’abord, ajoutez les barres, puis ajoutez des points jitter + barres d’erreur au dessus des barres.
# (1) Créer un line plot des moyennes + 
# points jitter individuels + barres d'erreur 
ggplot(df, aes(dose, len)) +
  geom_jitter( position = position_jitter(0.2), color = "darkgray") + 
  geom_line(aes(group = 1), data = df.summary) +
  geom_errorbar(
    aes(ymin = len-sd, ymax = len+sd),
    data = df.summary, width = 0.2) +
  geom_point(data = df.summary, size = 2)

# (2) Bar plot des moyennes + points individuels + erreurs
ggplot(df, aes(dose, len)) +
  geom_col(data = df.summary, fill = NA, color = "black") +
  geom_jitter( position = position_jitter(0.2), color = "black") + 
  geom_errorbar( aes(ymin = len-sd, ymax = len+sd), 
                 data = df.summary, width = 0.2) 

Barres d’erreur groupées

Cas d’une variable continue (len) et de deux variables de regroupement (dose, supp).

  • Calculez les statistiques descriptives de len regroupées par dose et supp:
library(dplyr)
df.summary2 <- df %>%
  group_by(dose, supp) %>%
  summarise(
    sd = sd(len),
    len = mean(len)
  )
df.summary2
## # A tibble: 6 x 4
## # Groups:   dose [3]
##   dose  supp     sd   len
##   <fct> <fct> <dbl> <dbl>
## 1 0.5   OJ     4.46 13.2 
## 2 0.5   VC     2.75  7.98
## 3 1     OJ     3.91 22.7 
## 4 1     VC     2.52 16.8 
## 5 2     OJ     2.66 26.1 
## 6 2     VC     4.80 26.1
  • Créer des diagrammes d’erreurs pour plusieurs groupes:
    1. pointrange coloré par groupes (supp)
    2. barres d’erreur standard + points moyens colorés par groupes (supp)
# (1) Pointrange : Ligne verticale avec un point au milieu
ggplot(df.summary2, aes(dose, len)) +
  geom_pointrange(
    aes(ymin = len-sd, ymax = len+sd, color = supp),
    position = position_dodge(0.3)
    )+
  scale_color_manual(values = c("#00AFBB", "#E7B800"))


# (2) Barres d'erreur standard
ggplot(df.summary2, aes(dose, len)) +
  geom_errorbar(
    aes(ymin = len-sd, ymax = len+sd, color = supp),
    position = position_dodge(0.3), width = 0.2
    )+
  geom_point(aes(color = supp), position = position_dodge(0.3)) +
  scale_color_manual(values = c("#00AFBB", "#E7B800")) 

  • Créez des line/bar plots simples pour plusieurs groupes.
    1. Line plots : changer le type de ligne par groupe (supp)
    2. Bar plots : changer la couleur de remplissage par groupes (supp)
# (1) Line plot + barres d'erreur
ggplot(df.summary2, aes(dose, len)) +
  geom_line(aes(linetype = supp, group = supp))+
  geom_point()+
  geom_errorbar(
    aes(ymin = len-sd, ymax = len+sd, group = supp),
     width = 0.2
    )

# (2) Bar plots + barres d'erreur supérieures.
ggplot(df.summary2, aes(dose, len)) +
  geom_col(aes(fill = supp), position = position_dodge(0.8), width = 0.7)+
  geom_errorbar(
    aes(ymin = len, ymax = len+sd, group = supp),
    width = 0.2, position = position_dodge(0.8)
    )+
  scale_fill_manual(values = c("grey80", "grey30"))

  • Ajouter des points jitter:
# Line plots avec des points jitter
ggplot(df, aes(dose, len, color = supp)) +
  geom_jitter(position = position_jitter(0.2)) + 
  geom_line(aes(group = supp),data = df.summary2) +
  geom_errorbar(aes(ymin = len-sd, ymax = len+sd), data = df.summary2, width = 0.2)+
  scale_color_manual(values = c("#00AFBB", "#E7B800")) +
  theme(legend.position = "top")

# Bar plots + points jitter + barres d'erreur
ggplot(df, aes(dose, len, color = supp)) +
  geom_col(data = df.summary2, position = position_dodge(0.8), 
           width = 0.7, fill = "white") +
  geom_jitter(
    position = position_jitterdodge(jitter.width = 0.2, dodge.width = 0.8)
    ) + 
  geom_errorbar(
    aes(ymin = len-sd, ymax = len+sd), data = df.summary2, 
    width = 0.2, position = position_dodge(0.8)
    )+
  scale_color_manual(values = c("#00AFBB", "#E7B800")) +
  theme(legend.position = "top")

Conclusion

Cet article décrit comment ajouter des barres d’erreur aux graphiques créés à l’aide du package ggplot2 dans R.



Version: English

GGPlot Barplot (Prev Lesson)
(Next Lesson) GGPLOT Diagramme de Densité
Back to Visualisation des Données à l’Aide de GGPlot2

No Comments

Give a comment

Want to post an issue with R? If yes, please make sure you have read this: How to Include Reproducible R Script Examples in Datanovia Comments

Teacher
Alboukadel Kassambara
Role : Fondateur de Datanovia
Read More