ggplot2 barres d'erreur : Guide de démarrage rapide - Logiciel R et visualisation de données


Ce tutoriel R décrit comment créer un graphique avec des barres d’erreur utilisant le logiciel R et le package ggplot2.

Il y a différents types de barres d’erreur, lesquelles peuvent être créées en utilisant les fonctions ci-dessous:

  • geom_errorbar()
  • geom_linerange()
  • geom_pointrange()
  • geom_crossbar()
  • geom_errorbarh()

Ajouter des barres d’erreurs sur un graphique en barre et un graphique linéaire

Préparer les données

Le jeu de données ToothGrowth est utilisé. Il décrit l’effet de la Vitamine C sur la croissance des dents des porcs guinéens. Trois doses de Vitamine C (0.5, 1 et 2 mg) avec chacune des méthodes de livraison [orange juice (OJ) ou ascorbic acid (VC)] sont utilisées:

library(ggplot2)
df <- ToothGrowth
df$dose <- as.factor(df$dose)
head(df)
##    len supp dose
## 1  4.2   VC  0.5
## 2 11.5   VC  0.5
## 3  7.3   VC  0.5
## 4  5.8   VC  0.5
## 5  6.4   VC  0.5
## 6 10.0   VC  0.5

Assurez-vous que la variable dose soit convertie en facteur en utilisant le script de R ci-dessus.

  • len : Longueur des dents
  • dose : Dose en milligrammes (0.5, 1, 2)
  • supp : Type de supplément (VC or OJ)

Dans les exemples ci-dessous, nous allons dessiner la moyenne de la longueur des dents dans chaque groupe. L’écart-type est utilisé comme barre d’erreurs sur le graphe.

Tout d’abord, la fonction ci-dessous sera utilisée pour calculer la moyenne et l’écart type, pour la variable d’intérêt, dans chaque groupe:

#+++++++++++++++++++++++++
# Fonction pour calculer la moyenne et l'écart-type
# pour chaque groupe
#+++++++++++++++++++++++++
# data : une data frame
# varname: le nom de la colonne contenant la variable 
  # d'intérêt 
# groupnames : vecteur contenant les noms des colonnes à utiliser
  # comme des variables de grouping 
data_summary <- function(data, varname, groupnames){
  require(plyr)
  summary_func <- function(x, col){
    c(mean = mean(x[[col]], na.rm=TRUE),
      sd = sd(x[[col]], na.rm=TRUE))
  }
  data_sum<-ddply(data, groupnames, .fun=summary_func,
                  varname)
  data_sum <- rename(data_sum, c("mean" = varname))
 return(data_sum)
}

Résumé statistique des données:

df2 <- data_summary(ToothGrowth, varname="len", 
                    groupnames=c("supp", "dose"))
# Convertir dose en facteur
df2$dose=as.factor(df2$dose)
head(df2)
##   supp dose   len       sd
## 1   OJ  0.5 13.23 4.459709
## 2   OJ    1 22.70 3.910953
## 3   OJ    2 26.06 2.655058
## 4   VC  0.5  7.98 2.746634
## 5   VC    1 16.77 2.515309
## 6   VC    2 26.14 4.797731

Barplot avec barre d’erreurs

La fonction geom_errorbar() est utilisée:

library(ggplot2)
# Graphique par défaut
p<- ggplot(df2, aes(x=dose, y=len, fill=supp)) + 
  geom_bar(stat="identity", color="black", 
           position=position_dodge()) +
  geom_errorbar(aes(ymin=len-sd, ymax=len+sd), width=.2,
                 position=position_dodge(.9)) 
print(p)
# Graphique fini
p+labs(title="Tooth length per dose", x="Dose (mg)", y = "Length")+
   theme_classic() +
   scale_fill_manual(values=c('#999999','#E69F00'))

Notez que, vous pouvez choisir de garder uniquement les barres d’erreurs supérieures.

# Garder seulement les barres d'érreurs supérieures
 ggplot(df2, aes(x=dose, y=len, fill=supp)) + 
  geom_bar(stat="identity", color="black", position=position_dodge()) +
  geom_errorbar(aes(ymin=len, ymax=len+sd), width=.2,
                 position=position_dodge(.9)) 

Lire plus sur ggplot2 et barplots : ggplot2 barplots

Graphique linéaire avec barres d’érreurs

# Graphique par défaut
p<- ggplot(df2, aes(x=dose, y=len, group=supp, color=supp)) + 
  geom_line() +
  geom_point()+
  geom_errorbar(aes(ymin=len-sd, ymax=len+sd), width=.2,
                 position=position_dodge(0.05))
print(p)
# Graphique fini
p+labs(title="Tooth length per dose", x="Dose (mg)", y = "Length")+
   theme_classic() +
   scale_color_manual(values=c('#999999','#E69F00'))

Vous pouvez aussi utiliser geom_pointrange() ou geom_linerange() au lieu d’utiliser la fonction geom_errorbar()

# Utiliser geom_pointrange
ggplot(df2, aes(x=dose, y=len, group=supp, color=supp)) + 
geom_pointrange(aes(ymin=len-sd, ymax=len+sd))
# Utiliser geom_line()+geom_pointrange()
ggplot(df2, aes(x=dose, y=len, group=supp, color=supp)) + 
  geom_line()+
  geom_pointrange(aes(ymin=len-sd, ymax=len+sd))

Lire plus sur ggplot2 et les graphiques linéaires : ggplot2 graphique linéaire

Dot plot avec lepoint de la moyenne et les barres d’érreurs

Les fonctions geom_dotplot() et stat_summary() sont utilisées :

La moyenne +/- SD peut être ajoutée comme un crossbar , une barre d’erreur ou un pointrange :

p <- ggplot(df, aes(x=dose, y=len)) + 
    geom_dotplot(binaxis='y', stackdir='center')
# utiliser geom_crossbar()
p + stat_summary(fun.data="mean_sdl", fun.args = list(mult=1), 
                 geom="crossbar", width=0.5)
# Utiliser geom_errorbar()
p + stat_summary(fun.data=mean_sdl, fun.args = list(mult=1), 
        geom="errorbar", color="red", width=0.2) +
  stat_summary(fun.y=mean, geom="point", color="red")
   
# Utiliser geom_pointrange()
p + stat_summary(fun.data=mean_sdl, fun.args = list(mult=1), 
                 geom="pointrange", color="red")

Lire plus sur ggplot2 dot plots : ggplot2 dot plot

Infos

Cette analyse a été faite en utilisant le logiciel R (ver. 3.2.4) et le package ggplot2 (ver. 2.1.0)


Enjoyed this article? I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Twitter, Facebook or Linked In.

Show me some love with the like buttons below... Thank you and please don't forget to share and comment below!!
Avez vous aimé cet article? Je vous serais très reconnaissant si vous aidiez à sa diffusion en l'envoyant par courriel à un ami ou en le partageant sur Twitter, Facebook ou Linked In.

Montrez-moi un peu d'amour avec les like ci-dessous ... Merci et n'oubliez pas, s'il vous plaît, de partager et de commenter ci-dessous!






Cette page a été vue 18600 fois