Warning: Undefined array key "options" in /htdocs/wp-content/plugins/elementor-pro/modules/theme-builder/widgets/site-logo.php on line 192
Créer un Scatterplot sur R avec ggplot2 - Rstudio Data
Visualisation

Créer un Scatterplot sur R avec ggplot2

Share

Dans cet article, nous allons explorer comment créer un scatterplot en utilisant ggplot2, une librairie de visualisation de données en R. Après avoir expliquer l’intérêt du scatterplot ou nuage de points, nous allons vous guider pas à pas dans le processus de création d’un scatterplot basique, jusqu’à une personnalisation avancé de celui-ci. In fine, que vous soyez débutant ou avancé en R, cet article vous permettra de créer des graphiques de qualité professionnelle pour vos analyses de données.

Qu’est-ce qu’un scatterplot ou nuage de point

Commençons par définir le scatterplot (ou nuage de points en français).

Un scatterplot (ou nuage de points en français) est un type de graphique utilisé pour représenter des données bivariées, c’est-à-dire des données avec deux variables mesurées pour chaque observation. On considère que le scatterplot représente chaque observation par un point sur un plan cartésien, où l’axe horizontal représente une variable et l’axe vertical représente l’autre variable. Cela veut dire que les points sont disposés sur le graphique en fonction des valeurs des deux variables pour chaque observation.

L’intérêt premier du scatterplot est qu’il permet de visualiser la relation entre les deux variables mesurées, en montrant s’il y a une corrélation entre elles (par exemple, si les points sont disposés le long d’une ligne ou d’une courbe) ou si elles sont indépendantes l’une de l’autre (par exemple, si les points sont dispersés au hasard sur le graphique).

Comment créer un Scatterplot avec ggplot2

Si vous n’avez pas encore installer puis charger le package ggplot2, commençons par là. (je vous invite dans ce cas à découvrir notre article dédié sur ggplot2 : »Principales fonctions du package ggplot2« ). Nous allons également charger notre library dslabs pour utiliser les données, ainsi que tidyverse pour pouvoir simplifier l’écriture avec les pipes (%>%).

install.packages("ggplot2")
library(ggplot2)
library(dslabs)
library(tidyverse)
data(murders)

Pour créer un scatteplot avec ggplot2, nous allons utiliser la fonction geom_point() avec deux variables. Comme nous utilisons encore une fois le package dslabs et les data murders, nous allons utiliser le nombre total (de meurtres) rapporter à la population des états pour notre premier plot.

murders %>% ggplot()
+     geom_point(aes(x = population, y = total))
Scatterplot basique
Scatterplot basique

Pour apporter de la lisibilité à l’axe des abscisses (x) nous allons transformer la population en « million ».

murders %>% ggplot() +
+     geom_point(aes(x = population/10^6, y = total))
Scatterplot basique
Scatterplot basique

Customiser un scatterplot avec ggplot2

Nous allons maintenant customiser progressivement notre graphique. Par soucis de simplicité, nous allons créer un objet « p » le plus basique possible, et y ajouter des paramètres progressivement (par exemple « + geom_point() ».

##création de l'objet p avec le graphique de base.
p <- murders %>% ggplot(aes(population/10^6, total))

Ajouter des étiquettes « labels » aux points

Pour ajouter des « lables » ou « étiquettes » aux points, nous allons utiliser la fonction geom_text() avec le paramètre « label= » comme ceci.

p + geom_text(label =  murders$abb)
Scatterplot avec étiquette sur les points
Scatterplot avec étiquette sur les points

Décaler les textes avec nudge_x ou nudge_y

en exécutant ce code, on peut voir que les abréviations sont au dessus de textes et le rende donc ilisible. nous allons donc décaler les textes grâce à « nudge_« .

## Redéfinir p pour y intégrer les labels
p <- murders %>% ggplot(aes(population/10^6, total, label = abb))

## Ajouter un décalage horizontal (nudge) aux labels
p + geom_point() +
+     geom_text(nudge_x = 1.5)
Scatterplot avec étiquette sur les points et échelle logarithmique
Scatterplot basique

Ajouter des titres aux axes et au graphique

Nous allons maintenant ajouter des titres aux axes, ainsi qu’au graphie grace aux fonctions « xlab() / ylab() » et ggtitle(). Nous allons également

## Ajout de titres aux axes et au graphique
p + geom_point() +
    geom_text(nudge_x = 0.75) +
    xlab("Population en million (log scale)") +
    ylab("Nombre total de meurtre (log scale)") +
    ggtitle("Meurtre par arme à feu aux Etats-Unies 2010")
Scatterplot avec étiquette sur les points et échelle logarithmique et des titres
Scatterplot basique

Modifier l’échelle du graphique

Pour modifier l’échelle du graphique nous pouvons utiliser les fonctions scale_x/y_log10() et ainsi avoir une échelle logarithmique.

p + geom_point() +
    geom_text(nudge_x = 0.75) +
    scale_x_log10() +
    scale_y_log10() +
    xlab("Population en million (log scale)") +
    ylab("Nombre total de meurtre (log scale)") +
    ggtitle("Meurtre par arme à feu aux Etats-Unies 2010")

Ajouter des couleurs aux points

Vous allons maintenant ajouter des couleurs à vos points. Pour cela nous avons deux choix. Soit attribuer une couleur à l’ensemble des points, soit attribuer une couleur à des points en fonction d’une variable de categorie.

  1. Utiliser l’attribut « color = » en designant une couleur (red, blue, light blue, green, dark green,…)
  2. Utiser « col » dans l’aes de la variable geom_point() et utiliser la catégorie « region »
#Redéfinir P pour avoir les titres 
p <- murders %>% ggplot(aes(population/10^6, total, label = abb))
p <- p + geom_point() +
    geom_text(nudge_x = 0.075) +
    scale_x_log10() +
    scale_y_log10() +
    xlab("Population en million ") +
    ylab("Nombre total de meurtre") +
    ggtitle("Meurtre par arme à feu aux Etats-Unies 2010")

# Ajouter la couleur bleue à tous les points
p + geom_point(size = 3, color = "blue")

# Ajouter des couleurs aux points en fonction de leur région
p + geom_point(aes(col = region))

Scatterplot avec couleur bleu sur les points
Scatterplot avec couleur bleu
Scatterplot avec couleur sur les points
Scatterplot avec couleur représentant les régions

Ajouter une ligne représentant la moyenne

Enfin, nous allons ajouter à notre graphique une ligne représentant la moyenne. Celle-ci sera réalisé grâce à la fonction geom_line(). Il faut cependant la définir au préalable.

# definition de la moyenne
m <- murders %>%
    summarize(rate = sum(total) / sum(population) * 10^6) %>%
    pull(rate)

# basic line with average murder rate for the country
p + geom_point(aes(col = region), size = 3) +    
   geom_abline(intercept = log10(m))
Scatterplot avec représentation de variables sous forme de couleur et ligne représentant la moyenne
Scatterplot avec ligne représentant la moyenne

Cette ligne nous donne une information importante mais cependant elle cache une partie des données, nous allons réaliser une dernière modification à celle-ci pour avoir une ligne en pointillés, bien plus lisible.

p + geom_point(aes(col = region)) +    
  geom_abline(intercept = log10(m), lty = 2)
Scatterplot avec ligne représentant la moyenne stylisée
Scatterplot avec ligne représentant la moyenne stylisée
Tags:

Next Up