ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données


Ce tutoriel R décrit comment créer un graphique en barre (barplots) en utilisant le logiciel R et le package ggplot2.

La fonction geom_bar() peut être utilisée.

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

Barplots basiques

Données

Des données dérivées de la table ToothGrowth sont utilisées. ToothGrowth décrit l’effet de la Vitamine C sur la croissance des dents des porcs guinéens.

df <- data.frame(dose=c("D0.5", "D1", "D2"),
                len=c(4.2, 10, 29.5))
head(df)
##   dose  len
## 1 D0.5  4.2
## 2   D1 10.0
## 3   D2 29.5
  • len : Longueur des dents
  • dose : Dose en milligrammes (0.5, 1, 2)

Créer un barplot

library(ggplot2)
# Barplot basique
p<-ggplot(data=df, aes(x=dose, y=len)) +
  geom_bar(stat="identity")
p
   
# Barplot horizontal
p + coord_flip()

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de donnéesggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

Changer la largeur et la couleur des barres:

# Changer la largeur des barres
ggplot(data=df, aes(x=dose, y=len)) +
  geom_bar(stat="identity", width=0.5)
# Changer les couleurs
ggplot(data=df, aes(x=dose, y=len)) +
  geom_bar(stat="identity", color="blue", fill="white")
# Thème minimal + couleur de remplissage bleue
p<-ggplot(data=df, aes(x=dose, y=len)) +
  geom_bar(stat="identity", fill="steelblue")+
  theme_minimal()
p

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de donnéesggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de donnéesggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

Choisir les groupes à afficher:

p + scale_x_discrete(limits=c("D0.5", "D2"))

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

Barplot avec des annotations

# En dehors des barres
ggplot(data=df, aes(x=dose, y=len)) +
  geom_bar(stat="identity", fill="steelblue")+
  geom_text(aes(label=len), vjust=-0.3, size=3.5)+
  theme_minimal()
# A l'intérieur des barres
ggplot(data=df, aes(x=dose, y=len)) +
  geom_bar(stat="identity", fill="steelblue")+
  geom_text(aes(label=len), vjust=1.6, color="white", size=3.5)+
  theme_minimal()

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de donnéesggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

Barplot du comptage des observations

Dans le code R ci-dessus, nous avons utilisé l’argument stat = “identity” pour faire des barplots. Notez que, la valeur par défaut de l’argument stat est bin. Dans ce cas, la hauteur des barres représentent le comptage des cas dans chaque catégorie.

Pour faire le barplot du comptage, nous allons utiliser le jeu de données mtcars:

head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
# Ne rien affecter à l'argument y
ggplot(mtcars, aes(x=factor(cyl)))+
  geom_bar(stat="bin", width=0.7, fill="steelblue")+
  theme_minimal()

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

Changer la couleur des barplots par groupes

Changer la couleur des traits des barres

La couleur des traits du barplot peut être automatiquement contrôlée par les niveaux de la variable dose:

# Changer la couleur des traits du barplot par groupes
p<-ggplot(df, aes(x=dose, y=len, color=dose)) +
  geom_bar(stat="identity", fill="white")
p

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

Il est aussi possible de changer manuellement la couleur des traits du barplot 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()

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de donnéesggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de donnéesggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

Lire plus sur ggplot2 et les couleurs ici: ggplot2 couleurs

Changer les couleurs de remplissage du barplot

Dans le code R ci-dessous, les couleurs de remplissage du barplot sont automatiquement contrôlées par les niveaux de la variable dose:

# Changer la couleur par groupes
p<-ggplot(df, aes(x=dose, y=len, fill=dose)) +
  geom_bar(stat="identity")+theme_minimal()
p

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

Il est aussi possible de changer manuellement les couleurs de remplissage du barplot 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()

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de donnéesggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de donnéesggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

Changer la couleur des traits en noir:

ggplot(df, aes(x=dose, y=len, fill=dose))+
geom_bar(stat="identity", color="black")+
scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"))+
  theme_minimal()

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

Lire plus sur ggplot2 et les couleurs ici: ggplot2 couleurs

Changer la position de la légende

# Changer les couleurs de remplissage en bleu (palette = "Blues")
p <- p+scale_fill_brewer(palette="Blues")
p + theme(legend.position="top")
p + theme(legend.position="bottom")
# Supprimze la légende
p + theme(legend.position="none")

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de donnéesggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de donnéesggplot2 barplots : Guide de démarrage rapide - 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

Changer l’ordre des éléments dans la légende

La fonction scale_x_discrete peut être utilisée pour changer l’ordre des éléments en “2”, “0.5”, “1”:

p + scale_x_discrete(limits=c("D2", "D0.5", "D1"))

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

Barplot avec plusieurs groupes

Données

Des données dérivées de la table ToothGrowth sont utilisées. 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:

df2 <- data.frame(supp=rep(c("VC", "OJ"), each=3),
                dose=rep(c("D0.5", "D1", "D2"),2),
                len=c(6.8, 15, 33, 4.2, 10, 29.5))
head(df2)
##   supp dose  len
## 1   VC D0.5  6.8
## 2   VC   D1 15.0
## 3   VC   D2 33.0
## 4   OJ D0.5  4.2
## 5   OJ   D1 10.0
## 6   OJ   D2 29.5
  • len : Longueur des dents
  • dose : Dose en milligrammes (0.5, 1, 2)
  • supp : Type de supplément (VC or OJ)

Créer des barplots

Un barplot empilé est créé par défaut. Vous pouvez utiliser la fonction position_dodge() pour changer cela. Le remplissage des barplots est contrôlé par les niveaux de la variable dose :

# Barplots empilés avec plusieurs groupes
ggplot(data=df2, aes(x=dose, y=len, fill=supp)) +
  geom_bar(stat="identity")
# Utiliser position = position_dodge()
ggplot(data=df2, aes(x=dose, y=len, fill=supp)) +
geom_bar(stat="identity", position=position_dodge())

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de donnéesggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

Changer les couleurs manuellement:

# Changer les couleurs manuellement
p <- ggplot(data=df2, aes(x=dose, y=len, fill=supp)) +
geom_bar(stat="identity", color="black", position=position_dodge())+
  theme_minimal()
# Couleurs personnalisées
p + scale_fill_manual(values=c('#999999','#E69F00'))
# palettes de couleurs de type brewer
p + scale_fill_brewer(palette="Blues")

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de donnéesggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

Ajouter des annotations

Ajouter des étiquettes sur un barplot groupé:

ggplot(data=df2, aes(x=dose, y=len, fill=supp)) +
  geom_bar(stat="identity", position=position_dodge())+
  geom_text(aes(label=len), vjust=1.6, color="white",
            position = position_dodge(0.9), size=3.5)+
  scale_fill_brewer(palette="Paired")+
  theme_minimal()

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

Ajouter des étiquettes sur un barplot empilé: 3 étapes sont nécessaires

  1. Trier les données en fonction des variables dose et supp : le package plyr est utilisé
  2. Calculer la somme cumulée de la variable len pour chaque dose
  3. Créer le graphique
library(plyr)
# Trier en fonction de dose et supp
df_sorted <- arrange(df2, dose, supp) 
head(df_sorted)
##   supp dose  len
## 1   OJ D0.5  4.2
## 2   VC D0.5  6.8
## 3   OJ   D1 10.0
## 4   VC   D1 15.0
## 5   OJ   D2 29.5
## 6   VC   D2 33.0
# Calculer la somme cumulée de len pour chaque dose
df_cumsum <- ddply(df_sorted, "dose",
                   transform, label_ypos=cumsum(len))
head(df_cumsum)
##   supp dose  len label_ypos
## 1   OJ D0.5  4.2        4.2
## 2   VC D0.5  6.8       11.0
## 3   OJ   D1 10.0       10.0
## 4   VC   D1 15.0       25.0
## 5   OJ   D2 29.5       29.5
## 6   VC   D2 33.0       62.5
# Créer le barplot
ggplot(data=df_cumsum, aes(x=dose, y=len, fill=supp)) +
  geom_bar(stat="identity")+
  geom_text(aes(y=label_ypos, label=len), vjust=1.6, 
            color="white", size=3.5)+
  scale_fill_brewer(palette="Paired")+
  theme_minimal()

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

Si vous voulez placer les étiquettes au milieu des barres, vous devez modifier la somme cumulée comme suit:

df_cumsum <- ddply(df_sorted, "dose",
                   transform, 
                   label_ypos=cumsum(len) - 0.5*len)
# Créer le barplot
ggplot(data=df_cumsum, aes(x=dose, y=len, fill=supp)) +
  geom_bar(stat="identity")+
  geom_text(aes(y=label_ypos, label=len), vjust=1.6, 
            color="white", size=3.5)+
  scale_fill_brewer(palette="Paired")+
  theme_minimal()

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

Barplot avec axe des x de type numérique

Si la variable sur l’axe des x est de type numérique, il peut être utile de le traiter comme une variable de type facteur ou continue, selon ce que vous souhaitez faire:

# Créer des données
df2 <- data.frame(supp=rep(c("VC", "OJ"), each=3),
                dose=rep(c("0.5", "1", "2"),2),
                len=c(6.8, 15, 33, 4.2, 10, 29.5))
head(df2)
##   supp dose  len
## 1   VC  0.5  6.8
## 2   VC    1 15.0
## 3   VC    2 33.0
## 4   OJ  0.5  4.2
## 5   OJ    1 10.0
## 6   OJ    2 29.5
# axe des x traité comme variable continue 
df2$dose <- as.numeric(as.vector(df2$dose))
ggplot(data=df2, aes(x=dose, y=len, fill=supp)) +
  geom_bar(stat="identity", position=position_dodge())+
  scale_fill_brewer(palette="Paired")+
  theme_minimal()
# Axe des x traité comme variable discrete
df2$dose<-as.factor(df2$dose)
ggplot(data=df2, aes(x=dose, y=len, fill=supp)) +
  geom_bar(stat="identity", position=position_dodge())+
  scale_fill_brewer(palette="Paired")+
  theme_minimal()

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de donnéesggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

Barplot avec barres d’erreur

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:

df3 <- data_summary(ToothGrowth, varname="len", 
                    groupnames=c("supp", "dose"))
# Convert dose to a factor variable
df3$dose=as.factor(df3$dose)
head(df3)
##   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

La fonction geom_errorbar() est utilisée:

# L'écart type est utilisé comme barre d'erreur
p <- ggplot(df3, aes(x=dose, y=len, fill=supp)) + 
   geom_bar(stat="identity", position=position_dodge()) +
  geom_errorbar(aes(ymin=len-sd, ymax=len+sd), width=.2,
                 position=position_dodge(.9))
  
p + scale_fill_brewer(palette="Paired") + theme_minimal()

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

Barplots personnalisés

# Changer les couleurs par groupes
# Ajouter les barres d'erreur
p + labs(title="Plot of length  per dose", 
         x="Dose (mg)", y = "Length")+
   scale_fill_manual(values=c('black','lightgray'))+
   theme_classic()

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

Changer les couleurs de remplissage manuellement :

# Greens (vert)
p + scale_fill_brewer(palette="Greens") + theme_minimal()
# Reds (rouge)
p + scale_fill_brewer(palette="Reds") + theme_minimal()

ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de donnéesggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données

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?

==> Subscribe to our Mailing List <==

* indicates required


 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.


Suggestions


ggplot2 couleurs : Changer les couleurs automatiquement et manuellement - Logiciel R et visualisation de données
ggplot2 graduation des axes : Guide pour personnaliser les étiquettes des graduations - Logiciel R et visualisation de données
ggplot2 légende : Modifier facilement la légende d'un graphique - Logiciel R et visualisation de données
ggplot2 - Combiner plusieurs graphiques sur la même page - Logiciel R et visualisation de données
ggplot2 échelle et transformation des axes - Logiciel R et visualisation de données
ggplot2 titres : Titre principal, titre des axes et légendes - Logiciel R et visualisation de données
ggplot2 box plot : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 nuage de points: Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 textes : Ajouter du texte à un graphique - Logiciel R et visualisation de données
ggplot2 thèmes et couleurs de fond : les 3 éléments - Logiciel R et visualisation de données
ggplot2 barres d'erreur : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 graphique en camembert: Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 types de points - Logiciel R et visualisation de données
ggplot2 histogramme : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 - ajouter une ligne droite à un graphe : Ligne horizontale, verticale et droite de régression
ggplot2
ggplot2 graphique linéaire : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 dot plot : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 : heatmap d'une matrice de corrélation - Logiciel R et visualisation de données
ggplot2 type de traits : Comment changer le type de trait d'un graphique avec le logiciel R?
ggplot2 facet : diviser un graphique en plusieurs panneaux - Logiciel R et visualisation de données
ggplot2 ECDF graphique: Guide de démarrage rapide pour la fonction de répartition empirique - Logiciel R et visualisation de données
ggplot2 courbe de distribution : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 violin plot : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 stripchart (jitter): Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 pivoter un graphique : Inverser et retourner le graphique - Logiciel R et visualisation de données
ggplot2 qq plot (quantile - quantile plot) : Guide de démarrage rapide - Logiciel R et visualisation de données

Cette page a été vue 19542 fois
Licence - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions
Licence Creative Commons