Visualisation des Données à l'Aide de GGPlot2

GGPLOT Diagramme de Densité

Un graphique de densité est une alternative à l’histogramme, utilisé pour visualiser la distribution d’une variable continue.

Les pics d’un graphe de densité aident à identifier où les valeurs sont concentrées sur l’intervalle de la variable continue.

Par rapport aux histogrammes, les diagrammes de densité sont plus aptes à trouver la forme de la distribution parce qu’ils ne sont pas affectés par le nombre de barres utilisées (chaque barre utilisée dans un histogramme typique).

Par exemple, un histogramme avec seulement 4 barres ne produirait pas une forme de distribution suffisamment distincte de celle d’un histogramme de 30 barres. Cependant, avec les diagrammes de densité, ce n’est pas un problème.

Cet article décrit comment créer des courbes de densité à l’aide du package ggplot2 dans R.



Sommaire:

Livre Apparenté

GGPLOT2 - L’Essentiel pour une Visualisation Magnifique des Données dans R

Fonctions R clés

  • Fonction clé : geom_density() (pour les courbes de densité).
  • Arguments clés pour personnaliser les graphiques:
    • color, size, linetype: changer la couleur, la taille et le type de ligne, respectivement
    • fill: changer la couleur de remplissage (pour les bar plots, les histogrammes et les diagrammes de densité)
    • alpha: créer une couleur semi-transparente.

Préparation des données

Créer des données (wdata) contenant les poids par sexe (M pour homme ; F pour femme):

set.seed(1234)
wdata = data.frame(
        sex = factor(rep(c("F", "M"), each=200)),
        weight = c(rnorm(200, 55), rnorm(200, 58))
        )

head(wdata, 4)
##   sex weight
## 1   F   53.8
## 2   F   55.3
## 3   F   56.1
## 4   F   52.7

Calculez le poids moyen par sexe en utilisant le package dplyr. Les données sont d’abord regroupées par sexe, puis résumées en calculant le poids moyen par groupe. L’opérateur %>% est utilisé pour combiner plusieurs opérations:

library("dplyr")
mu <- wdata %>% 
  group_by(sex) %>%
  summarise(grp.mean = mean(weight))
mu
## # A tibble: 2 x 2
##   sex   grp.mean
##   <fct>    <dbl>
## 1 F         54.9
## 2 M         58.1

Chargement des packages R requis

Chargez le package ggplot2 et mettez le thème par défaut à theme_classic() avec la légende en haut du graphique:

library(ggplot2)
theme_set(
  theme_classic() +
    theme(legend.position = "top")
  )

Diagramme de densité basique

Nous commençons par créer un graphique, appelé a, que nous terminerons dans la section suivante en ajoutant une couche via la fonction geom_density().

a <- ggplot(wdata, aes(x = weight))

Le code R suivant crée des courbes de densité de base avec une ligne verticale correspondant à la valeur moyenne de la variable weight (geom_vline()):

# Diagramme de densité basique
# Echelle de l'axe y = stat(density) (comportement par défaut)
a + geom_density() +
  geom_vline(aes(xintercept = mean(weight)), linetype = "dashed")
  
# Changer l'axe des y à `count` au lieu de `density`
a + geom_density(aes(y = stat(count)), fill = "lightgray") +
  geom_vline(aes(xintercept = mean(weight)), linetype = "dashed")

Changer la couleur par groupe

Le code R suivant modifiera la couleur des traits et de remplissage par groupes du diagramme de densité. Les fonctions scale_color_manual() et scale_fill_manual() sont utilisées pour spécifier des couleurs personnalisées pour chaque groupe.

Nous allons procéder comme suit:

  • Changer les couleurs de remplissage et la couleur des lignes par groupe (sexe)
  • Ajoutez des lignes verticales des moyennes à l’aide de geom_vline(). Données : mu, qui contient les valeurs moyennes des poids (weights) par sexe (calculées dans la section précédente).
  • Modifier la couleur manuellement:
    • utiliser scale_color_manual() ou scale_colour_manual() pour changer la couleur des traits
    • utiliser scale_fill_manual() pour changer les couleurs de remplissage.
# Changer la couleur des lignes par sexe
a + geom_density(aes(color = sex)) +
  scale_color_manual(values = c("#868686FF", "#EFC000FF"))

# Changer la couleur de remplissage par sexe et ajouter la ligne moyenne
# Utiliser un remplissage semi-transparent : alpha = 0.4
a + geom_density(aes(fill = sex), alpha = 0.4) +
  geom_vline(aes(xintercept = grp.mean, color = sex), data = mu, linetype = "dashed") +
  scale_color_manual(values = c("#868686FF", "#EFC000FF"))+
  scale_fill_manual(values = c("#868686FF", "#EFC000FF"))



Version: English

GGPLOT Barres d’Erreur (Prev Lesson)
(Next Lesson) GGPLOT Histogramme
Back to Visualisation des Données à l’Aide de GGPlot2

No Comments

Give a comment

Want to post an issue with R? If yes, please make sure you have read this: How to Include Reproducible R Script Examples in Datanovia Comments

Teacher
Alboukadel Kassambara
Role : Fondateur de Datanovia
Read More