Nuage de points dans R en utilisant ggplot2 (avec exemple)
Les graphiques constituent la troisiรจme partie du processus dโanalyse des donnรฉes. La premiรจre partie concerne donnรฉes extracproduction, la deuxiรจme partie traite de nettoyer et manipuler les donnรฉes. Enfin, le data scientist devra peut-รชtre communiquer graphiquement ses rรฉsultats.
Le travail du data scientist peut รชtre revu dans lโimage suivante
- La premiรจre tรขche dโun data scientist est de dรฉfinir une question de recherche. Cette question de recherche dรฉpend des objectifs et des buts du projet.
- Aprรจs cela, lโune des tรขches les plus importantes est lโingรฉnierie des fonctionnalitรฉs. Le data scientist doit collecter, manipuler et nettoyer les donnรฉes
- Une fois cette รฉtape terminรฉe, il peut commencer ร explorer lโensemble de donnรฉes. Parfois, il est nรฉcessaire dโaffiner et de modifier lโhypothรจse initiale en raison dโune nouvelle dรฉcouverte.
- When the explicatif lโanalyse est rรฉalisรฉe, le data scientist doit considรฉrer la capacitรฉ du lecteur ร comprendre les concepts et les modรจles sous-jacents.
- Ses rรฉsultats doivent รชtre prรฉsentรฉs dans un format comprรฉhensible par toutes les parties prenantes. L'une des meilleures mรฉthodes pour communiquer les rรฉsultats passent par un graphique.
- Les graphiques sont un outil incroyable pour simplifier une analyse complexe.
paquet ggplot2
Cette partie du didacticiel se concentre sur la faรงon de crรฉer des graphiques/diagrammes avec R.
Dans ce tutoriel, vous utiliserez le package ggplot2. Ce package repose sur les principes fondamentaux de l'ouvrage ยซ Grammar of graphics ยป de Wilkinson (2005). ggplot2 est trรจs flexible et intรจgre de nombreux thรจmes et spรฉcifications de graphiques ร un haut niveau d'abstraction.tracAvec ggplot2, il est impossible de tracer des graphiques 3D et de crรฉer des graphiques interactifs.
Dans ggplot2, un graphe est composรฉ des arguments suivants :
- donnรฉes,
- carte esthรฉtiqueping
- objet gรฉomรฉtrique
- transformations statistiques
- Balance
- systรจme de coordonnรฉes
- ajustements de position
- facettage
Vous apprendrez ร contrรดler ces arguments dans le didacticiel.
La syntaxe de base de ggplot2 est :
ggplot(data, mapping=aes()) + geometric object arguments: data: Dataset used to plot the graph mapping: Control the x and y-axis geometric object: The type of plot you want to show. The most common object are: - Point: `geom_point()` - Bar: `geom_bar()` - Line: `geom_line()` - Histogram: `geom_histogram()`
nuage de points
Voyons comment ggplot fonctionne avec l'ensemble de donnรฉes mtcars. Vous commencez par tracer un nuage de points de la variable mpg et de la variable drat.
Nuage de points de base
library(ggplot2)
ggplot(mtcars, aes(x = drat, y = mpg)) +
geom_point()
Code Explication
- Vous transmettez d'abord l'ensemble de donnรฉes mtcars ร ggplot.
- ร lโintรฉrieur de lโargument aes(), vous ajoutez lโaxe des x et lโaxe des y.
- Le signe + signifie que vous voulez que R continue ร lire le code. Cela rend le code plus lisible en le cassant.
- Utilisez geom_point() pour l'objet gรฉomรฉtrique.
Sortie :
Nuage de points avec des groupes
Parfois, il peut รชtre intรฉressant de distinguer les valeurs par groupe de donnรฉes (c'est-ร -dire les donnรฉes au niveau des facteurs).
ggplot(mtcars, aes(x = mpg, y = drat)) +
geom_point(aes(color = factor(gear)))
Code Explication
- L'aes() ร l'intรฉrieur de geom_point() contrรดle la couleur du groupe. Le groupe doit รชtre une variable factorielle. Ainsi, vous convertissez le rapport variable en facteur.
- Au total, vous avez le code aes(color = factor(gear)) qui change la couleur des points.
Sortie :
Changer d'axe
Redimensionner les donnรฉes constitue une grande partie du travail du data scientist. Dans de rares occasions, les donnรฉes se prรฉsentent sous une jolie forme de cloche. Une solution pour rendre vos donnรฉes moins sensibles aux valeurs aberrantes consiste ร les redimensionner.
ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +
geom_point(aes(color = factor(gear)))
Code Explication
- Vous transformez les variables x et y dans log() directement ร l'intรฉrieur de la fonction map aes().ping.
Notez que toute autre transformation peut รชtre appliquรฉe telle que la standardisation ou la normalisation.
Sortie :
Nuage de points avec valeurs ajustรฉes
Vous pouvez ajouter un autre niveau d'information au graphique. Vous pouvez tracer la valeur ajustรฉe d'une rรฉgression linรฉaire.
my_graph <- ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +
geom_point(aes(color = factor(gear))) +
stat_smooth(method = "lm",
col = "#C42126",
se = FALSE,
size = 1)
my_graph
Code Explication
- graphique : vous stockez votre graphique dans le graphique variable. Il est utile pour une utilisation ultรฉrieure ou pour รฉviter une ligne de codes trop complexe
- L'argument stat_smooth() contrรดle la mรฉthode de lissage
- mรฉthode = ยซ lm ยป : Rรฉgression linรฉaire
- col = ยซ #C42126 ยป : Code pour la couleur rouge de la ligne
- se = FALSE : ne pas afficher l'erreur standard
- size = 1 : la taille de la ligne est 1
Sortie :
Notez que d'autres mรฉthodes de lissage sont disponibles
- gm
- guibole
- loess : valeur par dรฉfaut
- jante
Ajouter des informations au graphique
Jusqu'ร prรฉsent, nous n'avons pas ajoutรฉ d'informations dans les graphiques. Les graphiques doivent รชtre informatifs. Le lecteur devrait voir lโhistoire derriรจre lโanalyse des donnรฉes simplement en regardant le graphique sans consulter de documentation supplรฉmentaire. Par consรฉquent, les graphiques ont besoin de bonnes รฉtiquettes. Vous pouvez ajouter des รฉtiquettes avec la fonction labs().
La syntaxe de base de lab() est :
lab(title = "Hello Guru99") argument: - title: Control the title. It is possible to change or add title with: - subtitle: Add subtitle below title - caption: Add caption below the graph - x: rename x-axis - y: rename y-axis Example:lab(title = "Hello Guru99", subtitle = "My first plot")
Ajouter un titre
Une information obligatoire ร ajouter est รฉvidemment un titre.
my_graph +
labs(
title = "Plot Mile per hours and drat, in log"
)
Code Explication
- my_graph : Vous utilisez le graphique que vous avez stockรฉ. Cela รฉvite de rรฉรฉcrire tous les codes ร chaque fois que vous ajoutez de nouvelles informations au graphique.
- Vous enveloppez le titre dans le lab().
- Code pour la couleur rouge de la ligne
- se = FALSE : ne pas afficher l'erreur standard
- size = 1 : la taille de la ligne est 1
Sortie :
Ajouter un titre avec un nom dynamique
Un titre dynamique est utile pour ajouter des informations plus prรฉcises dans le titre.
Vous pouvez utiliser la fonction coller() pour imprimer du texte statique et du texte dynamique. La syntaxe de base de paste() est :
paste("This is a text", A)
arguments
- " ": Text inside the quotation marks are the static text
- A: Display the variable stored in A
- Note you can add as much static text and variable as you want. You need to separate them with a comma
Exemple :
A <-2010
paste("The first year is", A)
Sortie :
## [1] "The first year is 2010"
B <-2018
paste("The first year is", A, "and the last year is", B)
Sortie :
## [1] "The first year is 2010 and the last year is 2018"
Vous pouvez ajouter un nom dynamique ร notre graphique, ร savoir la moyenne des mpg.
mean_mpg <- mean(mtcars$mpg)
my_graph + labs(
title = paste("Plot Mile per hours and drat, in log. Average mpg is", mean_mpg)
)
Code Explication
- Vous crรฉez la moyenne de mpg avec Mean(mtcars$mpg) stockรฉ dans la variable Mean_mpg
- Vous utilisez Paste() avec Mean_mpg pour crรฉer un titre dynamique renvoyant la valeur moyenne de mpg
Sortie :
Ajouter un sous-titre
Deux dรฉtails supplรฉmentaires peuvent rendre votre graphique plus explicite. Vous parlez du sous-titre et de la lรฉgende. Le sous-titre se place juste en dessous du titre. La lรฉgende peut indiquer qui a effectuรฉ le calcul et la source des donnรฉes.
my_graph +
labs(
title =
"Relation between Mile per hours and drat",
subtitle =
"Relationship break down by gear class",
caption = "Authors own computation"
)
Code Explication
- Dans le lab(), vous avez ajoutรฉ :
- title = ยซ Relation entre le mile par heure et le drat ยป : ajouter un titre
- subtitle = ยซ Rรฉpartition des relations par classe d'รฉquipement ยป : Ajouter un sous-titre
- caption = ยซ Calcul propre aux auteurs : ajouter une lรฉgende
- Vous sรฉparez chaque nouvelle information par une virgule, ,
- Notez que vous cassez les lignes de code. Ce n'est pas obligatoire, et cela permet seulement de lire le code plus facilement
Sortie :
Renommer l'axe X et l'axe Y
Les variables elles-mรชmes dans l'ensemble de donnรฉes peuvent ne pas toujours รชtre explicites ou, par convention, utiliser le _ lorsqu'il y a plusieurs mots (c'est-ร -dire GDP_CAP). Vous ne voulez pas qu'un tel nom apparaisse dans votre graphique. Il est important de changer le nom ou d'ajouter plus de dรฉtails, comme les unitรฉs.
my_graph +
labs(
x = "Drat definition",
y = "Mile per hours",
color = "Gear",
title = "Relation between Mile per hours and drat",
subtitle = "Relationship break down by gear class",
caption = "Authors own computation"
)
Code Explication
- Dans le lab(), vous avez ajoutรฉ :
- x = ยซ Dรฉfinition Drat ยป : Changer le nom de l'axe des x
- y = ยซ Mile par heure ยป : modifiez le nom de l'axe y
Sortie :
Contrรดler la balance
Vous pouvez contrรดler l'รฉchelle de l'axe.
La fonction seq() est pratique lorsque vous devez crรฉer une sรฉquence de nombres. La syntaxe de base est la suivante :
seq(begin, last, by = x) arguments: - begin: First number of the sequence - last: Last number of the sequence - by= x: The step. For instance, if x is 2, the code adds 2 to `begin-1` until it reaches `last`
Par exemple, si vous souhaitez crรฉer une plage de 0 ร 12 avec un pas de 3, vous aurez quatre nombres, 0 4 8 12
seq(0, 12,4)
Sortie :
## [1] 0 4 8 12
Vous pouvez contrรดler l'รฉchelle de l'axe x et de l'axe y comme ci-dessous
my_graph +
scale_x_continuous(breaks = seq(1, 3.6, by = 0.2)) +
scale_y_continuous(breaks = seq(1, 1.6, by = 0.1)) +
labs(
x = "Drat definition",
y = "Mile per hours",
color = "Gear",
title = "Relation between Mile per hours and drat",
subtitle = "Relationship break down by gear class",
caption = "Authors own computation"
)
Code Explication
- La fonction scale_y_continuous() contrรดle le l'axe y
- La fonction scale_x_continuous() contrรดle le axe des x.
- Le paramรจtre breaks contrรดle la division de lโaxe. Vous pouvez ajouter manuellement la sรฉquence de nombres ou utiliser la fonction seq() :
- seq(1, 3.6, by = 0.2) : Crรฉez six nombres de 2.4 ร 3.4 avec un pas de 3
- seq(1, 1.6, by = 0.1) : Crรฉez sept nombres de 1 ร 1.6 avec un pas de 1
Sortie :
Thรจme
Enfin, R nous permet de personnaliser notre intrigue avec diffรฉrents thรจmes. La bibliothรจque ggplot2 comprend huit thรจmes :
- thรจme_bw()
- thรจme_light()
- theme_classis()
- theme_linedraw()
- thรจme_dark()
- thรจme_minimal()
- thรจme_gris()
- thรจme_void()
my_graph +
theme_dark() +
labs(
x = "Drat definition, in log",
y = "Mile per hours, in log",
color = "Gear",
title = "Relation between Mile per hours and drat",
subtitle = "Relationship break down by gear class",
caption = "Authors own computation"
)
Sortie :
Enregistrer les tracรฉs
Aprรจs toutes ces รฉtapes, il est temps de sauvegarder et de partager votre graphique. Vous ajoutez ggsave('NAME OF THE FILE) juste aprรจs avoir tracรฉ le graphique et il sera stockรฉ sur le disque dur.
Le graphique est enregistrรฉ dans le rรฉpertoire de travail. Pour vรฉrifier le rรฉpertoire de travail, vous pouvez exรฉcuter ce code :
directory <-getwd() directory
Traรงons votre graphique fantastique, enregistrons-le et vรฉrifions l'emplacement
my_graph +
theme_dark() +
labs(
x = "Drat definition, in log",
y = "Mile per hours, in log",
color = "Gear",
title = "Relation between Mile per hours and drat",
subtitle = "Relationship break down by gear class",
caption = "Authors own computation"
)
Sortie :
ggsave("my_fantastic_plot.png")
Sortie :
## Saving 5 x 4 in image
Note: ร des fins pรฉdagogiques uniquement, nous avons crรฉรฉ une fonction appelรฉe open_folder() pour ouvrir le dossier rรฉpertoire pour vous. Il vous suffit d'exรฉcuter le code ci-dessous et de voir oรน l'image est stockรฉe. Vous devriez voir un fichier nommรฉ my_fantastic_plot.png.
# Run this code to create the
function
open_folder <- function(dir) {
if (.Platform['OS.type'] == "windows") {
shell.exec(dir)
} else {
system(paste(Sys.getenv("R_BROWSER"), dir))
}
}
# Call the
function to open the folder open_folder(directory)
Rรฉsumรฉ
Vous pouvez rรฉsumer les arguments pour crรฉer un nuage de points dans le tableau ci-dessous :
| Objectif | Code |
|---|---|
| Nuage de points de base |
ggplot(df, aes(x = x1, y = y)) + geom_point() |
| Nuage de points avec groupe de couleurs |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) + stat_smooth(method = "lm") |
| Ajouter des valeurs ajustรฉes |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) |
| Ajouter un titre |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99"))
|
| Ajouter un sous-titre |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99"))
|
| Renommer x |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1") |
| Renommer y |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1") |
| Contrรดler l'รฉchelle |
ggplot(df, aes(x = x1, y = y)) + geom_point() + scale_y_continuous(breaks = seq(10, 35, by = 10)) + scale_x_continuous(breaks = seq(2, 5, by = 1) |
| Crรฉer des journaux |
ggplot(df, aes(x =log(x1), y = log(y))) + geom_point() |
| Thรจme |
ggplot(df, aes(x = x1, y = y)) + geom_point() + theme_classic() |
| Enregistrer |
ggsave("my_fantastic_plot.png")
|












