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)









Want to Learn More on R Programming and Data Science?

Follow us by Email

by FeedBurner

On Social Networks:


 Get involved :
  Click to follow us on and Google+ :   
  Comment this article by clicking on "Discussion" button (top-right position of this page)
  Sign up as a member and post news and articles on STHDA web site.
Cette page a été vue 11822 fois