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


Ce tutoriel R décrit comment créer un dot plot avec le logiciel R et le package ggplot2.

La fonction geom_dotplot() est utilisée.

Préparer les données

Le jeu de données ToothGrowth est utilisé dans les exemples suivants :

# Convertir la colonne dose en facteur
ToothGrowth$dose <- as.factor(ToothGrowth$dose)
head(ToothGrowth)
##    len supp dose
## 1  4.2   VC  0.5
## 2 11.5   VC  0.5
## 3  7.3   VC  0.5
## 4  5.8   VC  0.5
## 5  6.4   VC  0.5
## 6 10.0   VC  0.5

Assurez-vous que la variable dose soit convertie en facteur en utilisant le script de R ci-dessus.

Dot plots basiques

library(ggplot2)
# Dot plot basique
p<-ggplot(ToothGrowth, aes(x=dose, y=len)) + 
  geom_dotplot(binaxis='y', stackdir='center')
p
# Changer dotsize (taille) et stackratio (dispersion)
ggplot(ToothGrowth, aes(x=dose, y=len)) + 
  geom_dotplot(binaxis='y', stackdir='center',
               stackratio=1.5, dotsize=1.2)
# Tourner dot plot
p + coord_flip()

Choisir les groupes à afficher:

p + scale_x_discrete(limits=c("0.5", "2"))

Ajouter des statistiques descriptives sur un dot plot

La fonction stat_summary() peut être utilisée pour ajouter la moyenne/médiane et plus sur un dot plot.

Ajouter le point de la moyenne et de la médiane

# dot plot avec le point de la moyenne
p + stat_summary(fun.y=mean, geom="point", shape=18,
                 size=3, color="red")
# dot plot avec le point de la médiane
p + stat_summary(fun.y=median, geom="point", shape=18,
                 size=3, color="red")

Dot plot avec un box plot et un violin plot

# Ajouter un box plot basique
ggplot(ToothGrowth, aes(x=dose, y=len)) + 
  geom_boxplot()+
  geom_dotplot(binaxis='y', stackdir='center')
# Ajouter un box plot de type notch
ggplot(ToothGrowth, aes(x=dose, y=len)) + 
  geom_boxplot(notch = TRUE)+
  geom_dotplot(binaxis='y', stackdir='center')
# Ajouter un violin plot
ggplot(ToothGrowth, aes(x=dose, y=len)) + 
  geom_violin(trim = FALSE)+
  geom_dotplot(binaxis='y', stackdir='center')

Lire plus sur le box plot : ggplot2 box plot

Lire plus sur le violin plot : ggplot2 violin plot

Ajouter la moyenne et l’écart type

La fonction mean_sdl est utilisée. mean_sdl calcule la moyenne plus ou moins une constante fois l’écart type.

Dans le code R ci-dessous, la constante est spécifiée en utilisant l’argument mult (mult = 1). Par défaut mult = 2.

La moyenne +/- SD peut être ajoutée comme un crossbar ou un pointrange :

p <- ggplot(ToothGrowth, aes(x=dose, y=len)) + 
    geom_dotplot(binaxis='y', stackdir='center')
p + stat_summary(fun.data="mean_sdl", fun.args = list(mult = 1), 
                 geom="crossbar", width=0.5)
p + stat_summary(fun.data=mean_sdl, fun.args = list(mult = 1), 
                 geom="pointrange", color="red")

Notez que, vous pouvez aussi définir une fonction personnalisée pour calculer les statistiques descriptives comme suit.

# Fonction pour produire les 
# statistiques descriptives (moyenne et +/- sd)
data_summary <- function(x) {
   m <- mean(x)
   ymin <- m-sd(x)
   ymax <- m+sd(x)
   return(c(y=m,ymin=ymin,ymax=ymax))
}

Utiliser une fonction personnalisée :

p + stat_summary(fun.data=data_summary, color="blue")

Changer la couleur des dot plots par groupes

Dans le code R ci-dessous, la couleur de remplissage du dot plot est automatiquement contrôlée par les niveaux de la variable dose:

# Utiliser une couleur de remplissage unique
ggplot(ToothGrowth, aes(x=dose, y=len)) + 
    geom_dotplot(binaxis='y', stackdir='center', fill="#FFAAD4")
# Changer la couleur des dot plots par groupe
p<-ggplot(ToothGrowth, aes(x=dose, y=len, fill=dose)) +
  geom_dotplot(binaxis='y', stackdir='center')
p

Il est aussi possible de changer manuellement les couleurs de remplissage du dot plot 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() + 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")
p + theme(legend.position="none") # supprimer la légende

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("2", "0.5", "1"))

Dot plot avec plusieurs groupes

# Changer la couleur des dot-plots par groupe
ggplot(ToothGrowth, aes(x=dose, y=len, fill=supp)) +
  geom_dotplot(binaxis='y', stackdir='center')
# Changer la position
p<-ggplot(ToothGrowth, aes(x=dose, y=len, fill=supp)) +
  geom_dotplot(binaxis='y', stackdir='center', 
               position=position_dodge(0.8))
p

Change les couleurs du dot plot et ajouter des box plots :

# Changer les couleurs
p+scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"))
# Ajouter des box plots
ggplot(ToothGrowth, aes(x=dose, y=len, fill=supp)) +
  geom_boxplot(fill="white")+
  geom_dotplot(binaxis='y', stackdir='center')
# Changer la position
ggplot(ToothGrowth, aes(x=dose, y=len, fill=supp)) +
  geom_boxplot(position=position_dodge(0.8))+
  geom_dotplot(binaxis='y', stackdir='center', 
               position=position_dodge(0.8))

Dot plots personnalisés

# Dot plot basique
ggplot(ToothGrowth, aes(x=dose, y=len)) + 
  geom_boxplot()+
  geom_dotplot(binaxis='y', stackdir='center')+
  labs(title="Plot of length  by dose",x="Dose (mg)", y = "Length")+
  theme_classic()
# Changer la couleur par groupes
dp <-ggplot(ToothGrowth, aes(x=dose, y=len, fill=dose)) + 
  geom_dotplot(binaxis='y', stackdir='center')+
  labs(title="Plot of length  by dose",x="Dose (mg)", y = "Length")
dp + theme_classic()

Changer les couleurs de remplissage manuellement:

# Couleurs continues
dp + scale_fill_brewer(palette="Blues") + theme_classic()
# Couleurs discretes
dp + scale_fill_brewer(palette="Dark2") + theme_minimal()
# Gradient de couleurs
dp + scale_fill_brewer(palette="RdBu") + theme_minimal()

Lire plus sur ggplot2 et les couleurs ici: ggplot2 couleurs

Infos

Cette analyse a été faite en utilisant le logiciel R (ver. 3.2.4) et le package ggplot2 (ver. 2.1.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 9946 fois