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.

ggplot2 histogramme - Logiciel R et visualisation de donn?es

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

ggplot2 histogramme - Logiciel R et visualisation de donn?esggplot2 histogramme - Logiciel R et visualisation de donn?esggplot2 histogramme - Logiciel R et visualisation de donn?es

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") 

ggplot2 histogramme - Logiciel R et visualisation de donn?esggplot2 histogramme - Logiciel R et visualisation de donn?es

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")

ggplot2 histogramme - Logiciel R et visualisation de donn?esggplot2 histogramme - Logiciel R et visualisation de donn?es

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")

ggplot2 histogramme - Logiciel R et visualisation de donn?esggplot2 histogramme - Logiciel R et visualisation de donn?es

# 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

ggplot2 histogramme - Logiciel R et visualisation de donn?esggplot2 histogramme - Logiciel R et visualisation de donn?es

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")

ggplot2 histogramme - Logiciel R et visualisation de donn?esggplot2 histogramme - Logiciel R et visualisation de donn?esggplot2 histogramme - Logiciel R et visualisation de donn?es

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")

ggplot2 histogramme - Logiciel R et visualisation de donn?esggplot2 histogramme - Logiciel R et visualisation de donn?esggplot2 histogramme - Logiciel R et visualisation de donn?es

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()

ggplot2 histogramme - Logiciel R et visualisation de donn?esggplot2 histogramme - Logiciel R et visualisation de donn?esggplot2 histogramme - Logiciel R et visualisation de donn?es

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")

ggplot2 histogramme - Logiciel R et visualisation de donn?esggplot2 histogramme - Logiciel R et visualisation de donn?esggplot2 histogramme - Logiciel R et visualisation de donn?es

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")

ggplot2 histogramme - Logiciel R et visualisation de donn?esggplot2 histogramme - Logiciel R et visualisation de donn?es

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()

ggplot2 histogramme - Logiciel R et visualisation de donn?esggplot2 histogramme - Logiciel R et visualisation de donn?es

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()

ggplot2 histogramme - Logiciel R et visualisation de donn?es

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")

ggplot2 histogramme - Logiciel R et visualisation de donn?esggplot2 histogramme - Logiciel R et visualisation de donn?esggplot2 histogramme - Logiciel R et visualisation de donn?es

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)


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 13180 fois
Licence - Pas d?Utilisation Commerciale - Partage dans les M?mes Conditions
Licence Creative Commons