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)


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