ggplot2 courbe de distribution : Guide de démarrage rapide - Logiciel R et visualisation de données
Ce tutoriel R d?crit comment cr?er une courbe de distribution (ou densit?) avec le logiciel R et le package ggplot2.
La fonction geom_density() est utilis?e. Vous pouvez ?galement ajouter une ligne sp?cifiant la moyenne en utilisant la fonction geom_vline.
Pr?parer les donn?es
Les donn?es suivantes seront utilis?es dans les exemples ci-dessous:
set.seed(1234)
df <- data.frame(
sex=factor(rep(c("F", "M"), each=200)),
weight=round(c(rnorm(200, mean=55, sd=5),
rnorm(200, mean=65, sd=5)))
)
head(df)
## sex weight
## 1 F 49
## 2 F 56
## 3 F 60
## 4 F 43
## 5 F 57
## 6 F 58
Courbe de distribution basique
library(ggplot2)
# Graphe basique
p <- ggplot(df, aes(x=weight)) +
geom_density()
p
# Ajouter la ligne de la moyenne
p+ geom_vline(aes(xintercept=mean(weight)),
color="blue", linetype="dashed", size=1)
Changer le type de traits et la couleur
# Changer la couleur du traits et le remplissage
ggplot(df, aes(x=weight))+
geom_density(color="darkblue", fill="lightblue")
# Changer le type de traits
ggplot(df, aes(x=weight))+
geom_density(linetype="dashed")
Lire plus sur ggplot2 et les types de traits : ggplot2 types de traits
Changer la couleur de la courbe de distribution par groupe
Calculer la moyenne de chaque groupe :
library(plyr)
mu <- ddply(df, "sex", summarise, grp.mean=mean(weight))
head(mu)
## sex grp.mean
## 1 F 54.70
## 2 M 65.36
Changer la couleur des traits
La couleur des traits peut ?tre automatiquement contr?l?e par les niveaux de la variable sex:
# Changer la couleur des traits par groupe
ggplot(df, aes(x=weight, color=sex)) +
geom_density()
# Ajouter les moyennes
p<-ggplot(df, aes(x=weight, color=sex)) +
geom_density()+
geom_vline(data=mu, aes(xintercept=grp.mean, color=sex),
linetype="dashed")
p
Il est aussi possible de changer manuellement la couleur des traits du box plot en utilisant les fonctions:
- scale_color_manual() : pour utiliser des couleurs personnalis?es
- scale_color_brewer() : pour utiliser les palettes de couleurs du package RColorBrewer
- scale_color_grey() : pour utiliser la palette de couleurs grises
# Utiliser des couleurs personnalis?es
p+scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))
# Utiliser les palettes RColorBrewer
p+scale_color_brewer(palette="Dark2")
# Utiliser la palette de couleurs grises
p + scale_color_grey() + theme_classic()
Lire plus sur ggplot2 et les couleurs ici: ggplot2 couleurs
Changer les couleurs de remplissage
Dans le code R ci-dessous, les couleurs de remplissage sont automatiquement contr?l?es par les niveaux de la variable sex:
# Changer la couleur de remplissage par groupe
ggplot(df, aes(x=weight, fill=sex)) +
geom_density()
# Couleurs s?mi-transparentes
p<-ggplot(df, aes(x=weight, fill=sex)) +
geom_density(alpha=0.4)
p
# Ajouter les moyennes
p+geom_vline(data=mu, aes(xintercept=grp.mean, color=sex),
linetype="dashed")
Il est aussi possible de changer manuellement les couleurs de remplissage en utilisant les fonctions:
- scale_fill_manual() : pour utiliser des couleurs personnalis?es
- scale_fill_brewer() : pour utiliser les palettes de couleurs du package RColorBrewer
- scale_fill_grey() : pour utiliser la palette de couleurs grises
# Utiliser des couleurs personnalis?es
p+scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"))
# Utiliser les palettes RColorBrewer
p+scale_fill_brewer(palette="Dark2")
# Utiliser la palette de couleurs grises
p + scale_fill_grey() + theme_classic()
Lire plus sur ggplot2 et les couleurs ici: ggplot2 couleurs
Changer la position de la l?gende
p + theme(legend.position="top")
p + theme(legend.position="bottom")
p + theme(legend.position="none") # Remove legend
Les valeurs possibles pour l?argument legend.position sont : ?left?,?top?, ?right?, ?bottom?.
Lire plus sur ggplot2 et l?gende: ggplot2 l?gende
Combiner histogramme et courbe de distribution
- L?histogramme est dessin? avec les valeurs de densit? (au lieu des valeurs de compte) sur l?axe des y.
- Superposition avec une courbe de densit? (distribution) semi-transparente.
# Histogramme avec courbe de distribution
ggplot(df, aes(x=weight)) +
geom_histogram(aes(y=..density..), colour="black", fill="white")+
geom_density(alpha=.2, fill="#FF6666")
# Couleur par groupes
ggplot(df, aes(x=weight, color=sex, fill=sex)) +
geom_histogram(aes(y=..density..), alpha=0.5,
position="identity")+
geom_density(alpha=.2)
Utiliser les facets
Diviser le graphique en plusieurs panneaux:
p<-ggplot(df, aes(x=weight))+
geom_density()+facet_grid(sex ~ .)
p
# Ajouter les moyennes
p+geom_vline(data=mu, aes(xintercept=grp.mean, color="red"),
linetype="dashed")
Lire plus sur les facets : ggplot2 facets
Courbe de distribution personnalis?e
# Courbe de distribution basique
ggplot(df, aes(x=weight, fill=sex)) +
geom_density(fill="gray")+
geom_vline(aes(xintercept=mean(weight)), color="blue",
linetype="dashed")+
labs(title="Weight density curve",x="Weight(kg)", y = "Density")+
theme_classic()
# Changer la couleur des traits par groupe
p<- ggplot(df, aes(x=weight, color=sex)) +
geom_density()+
geom_vline(data=mu, aes(xintercept=grp.mean, color=sex),
linetype="dashed")+
labs(title="Weight density curve",x="Weight(kg)", y = "Density")
p + scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))+
theme_classic()
Changer la couleur des traits manuellement :
# Couleurs continues
p + scale_color_brewer(palette="Paired") + theme_classic()
# Couleurs discretes
p + scale_color_brewer(palette="Dark2") + theme_minimal()
# Gradient de couleurs
p + scale_color_brewer(palette="Accent") + theme_minimal()
Lire plus sur ggplot2 et l?gende: ggplot2 l?gende
Infos
Cette analyse a ?t? faite en utilisant le logiciel R (ver. 3.1.2) et le package ggplot2 (ver. 1.0.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!
Recommended for You!
Click to follow us on Facebook:
Comment this article by clicking on "Discussion" button (top-right position of this page)