ggplot2 histogramme : Guide de d?marrage rapide - Logiciel R et visualisation de donn?es
Ce tutoriel R d?crit comment cr?er un histogramme de distribution avec le logiciel R et le package ggplot2.
La fonction geom_histogram() 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
Histogramme basique
library(ggplot2)
# Histogramme basique
ggplot(df, aes(x=weight)) + geom_histogram()
# Changer la largeur des barres
ggplot(df, aes(x=weight)) +
geom_histogram(binwidth=1)
# Changer la couleur
p<-ggplot(df, aes(x=weight)) +
geom_histogram(color="black", fill="white")
p
Ajouter la moyenne et la courbe de distribution sur l?histogramme
- L?histogramme est dessin? avec les valeurs de densit? (au lieu des valeurs de comptage) sur l?axe des y.
- Superposition avec une courbe de densit? (distribution) semi-transparente. L?argument alpha est utilis? pour contr?ler la transparence des couleurs
# Ajouter le trait de la moyenne
p+ geom_vline(aes(xintercept=mean(weight)),
color="blue", linetype="dashed", size=1)
# Histogramme avec la courbe de distribution
ggplot(df, aes(x=weight)) +
geom_histogram(aes(y=..density..), colour="black", fill="white")+
geom_density(alpha=.2, fill="#FF6666")
Lire plus sur ggplot2 et les types de traits : ggplot2 types de traits
Changer le type et la couleur des traits de l?histogramme
# Changer la couleur des traits et de remplissage
ggplot(df, aes(x=weight))+
geom_histogram(color="darkblue", fill="lightblue")
# Changer le type de traits
ggplot(df, aes(x=weight))+
geom_histogram(color="black", fill="lightblue",
linetype="dashed")
Changer la couleur des histogrammes par groupes
Calculer la moyenne de chaque groupe
Le package plyr est utilis?:
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.
Notez que l?argument position peut ?tre utilis? pour ajuster la position des histogrammes des diff?rents groupes. Les valeurs possibles pour l?argument position sont: ?identity?, ?stack?, ?dodge?. La valeur par d?faut est : ?stack?.
# Changer la couleur des histogrammes par groupes
ggplot(df, aes(x=weight, color=sex)) +
geom_histogram(fill="white")
# Histogrammes ch?vauchants
ggplot(df, aes(x=weight, color=sex)) +
geom_histogram(fill="white", alpha=0.5, position="identity")
# Histogrammes s?par?s
ggplot(df, aes(x=weight, color=sex)) +
geom_histogram(fill="white", position="dodge")+
theme(legend.position="top")
# Ajouter le trait de la moyenne
p<-ggplot(df, aes(x=weight, color=sex)) +
geom_histogram(fill="white", position="dodge")+
geom_vline(data=mu, aes(xintercept=grp.mean, color=sex),
linetype="dashed")+
theme(legend.position="top")
p
Il est aussi possible de changer manuellement la couleur des traits de l?histogramme 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() +
theme(legend.position="top")
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, color=sex)) +
geom_histogram(position="identity")
# Couleurs s?mi-transparentes
p<-ggplot(df, aes(x=weight, fill=sex, color=sex)) +
geom_histogram(position="identity", alpha=0.5)
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_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))+
scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"))
# Utiliser les palettes RColorBrewer
p+scale_color_brewer(palette="Dark2")+
scale_fill_brewer(palette="Dark2")
# Utiliser la palette de couleurs grises
p + scale_color_grey()+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")
# Supprimer la l?gende
p + theme(legend.position="none")
Les valeurs possibles pour l?argument legend.position sont : ?left?,?top?, ?right?, ?bottom?.
Lire plus sur ggplot2 et l?gende: ggplot2 l?gende
Utiliser les facets
Diviser le graphique en plusieurs panneaux:
p<-ggplot(df, aes(x=weight))+
geom_histogram(color="black", fill="white")+
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
Histogrammes personnalis?s
# Histogramme basique
ggplot(df, aes(x=weight, fill=sex)) +
geom_histogram(fill="white", color="black")+
geom_vline(aes(xintercept=mean(weight)), color="blue",
linetype="dashed")+
labs(title="Weight histogram plot",x="Weight(kg)", y = "Count")+
theme_classic()
# Changer la couleur des traits par groupes
ggplot(df, aes(x=weight, color=sex, fill=sex)) +
geom_histogram(position="identity", alpha=0.5)+
geom_vline(data=mu, aes(xintercept=grp.mean, color=sex),
linetype="dashed")+
scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))+
scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"))+
labs(title="Weight histogram plot",x="Weight(kg)", y = "Count")+
theme_classic()
Combiner histogrammes et courbe de densit?:
# Changer la couleur des traits par groupe
ggplot(df, aes(x=weight, color=sex, fill=sex)) +
geom_histogram(aes(y=..density..), position="identity", alpha=0.5)+
geom_density(alpha=0.6)+
geom_vline(data=mu, aes(xintercept=grp.mean, color=sex),
linetype="dashed")+
scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))+
scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"))+
labs(title="Weight histogram plot",x="Weight(kg)", y = "Density")+
theme_classic()
Changer la couleur des traits manuellement:
p<-ggplot(df, aes(x=weight, color=sex)) +
geom_histogram(fill="white", position="dodge")+
geom_vline(data=mu, aes(xintercept=grp.mean, color=sex),
linetype="dashed")
# Couleurs continues
p + scale_color_brewer(palette="Paired") +
theme_classic()+theme(legend.position="top")
# Couleurs discretes
p + scale_color_brewer(palette="Dark2") +
theme_minimal()+theme_classic()+theme(legend.position="top")
# Gradient de couleurs
p + scale_color_brewer(palette="Accent") +
theme_minimal()+theme(legend.position="top")
Lire plus sur ggplot2 et les couleurs ici: ggplot2 couleurs
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!