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)
Show me some love with the like buttons below... Thank you and please don't forget to share and comment below!!
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!