Dans cet article, vous apprendrez à mapper les variables des données en fonction des propriétés visuelles des graphiques ggplot (points, barres, box plots, etc.).
Ces caractéristiques visuelles sont appelées esthétiques (ou aes) et comprennent:
- couleur et remplissage
- forme des points
- type de ligne
- size
- group
- etc
Les mappages d’esthétiques peuvent être définis dans ggplot()' et dans des fonctions individuelles (telles que
geom_point(),
geom_line()`, etc).
Sommaire:
Livre Apparenté
GGPLOT2 - L’Essentiel pour une Visualisation Magnifique des Données dans RPrérequis
Charger les packages requis et définir la fonction thème theme_bw()
comme thème par défaut:
library(ggplot2)
theme_set(theme_bw())
Notions de base
Mapper l’esthétique à des variables et des fonctions des variables:
# Mapper les esthétiques aux variables
ggplot(ToothGrowth, aes(x = supp, y = len)) +
geom_boxplot()
# Mapper les esthétiques aux fonctions des variables
ggplot(mtcars, aes(x = mpg ^ 2, y = wt / cyl)) +
geom_point()
L’esthétique peut aussi être mappée à des constantes:
# mapper x à une constante : 1
ggplot(ToothGrowth, aes(x = factor(1), y = len)) +
geom_boxplot(width = 0.5) +
geom_jitter(width = 0.1)
Notez que, aes() est passé soit à ggplot() soit à une couche spécifique. L’esthétique spécifiée dans ggplot() est utilisée par défaut pour chaque couche.
Par exemple:
# Utilisez ceci
ggplot(mpg, aes(displ, hwy)) + geom_point()
# ou ceci
ggplot(mpg) + geom_point(aes(displ, hwy))
Couleur et remplissage
# Couleur
ggplot(ToothGrowth, aes(supp, len)) +
geom_boxplot(aes(color = supp))
# Remplir
ggplot(ToothGrowth, aes(supp, len)) +
geom_boxplot(aes(fill = supp))
Forme
Modifier la forme des points par groupe:
ggplot(iris, aes(Sepal.Length, Sepal.Width)) +
geom_point(aes(shape = Species))
Groupe et type de ligne
Dans le line plot, par exemple, l’esthétique de groupe est utilisée pour s’assurer que les lignes sont tracées séparément pour chaque groupe
# Data
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, 4)
## 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
# Créer un line plot groupé
ggplot(df2, aes(dose, len, group = supp)) +
geom_line() +
geom_point()
# Changer le type de ligne par groupe
ggplot(df2, aes(dose, len, group = supp)) +
geom_line(aes(linetype = supp)) +
geom_point()
Étiquette
ggplot(df2, aes(dose, len, group = supp)) +
geom_line() +
geom_point() +
geom_text(aes(label = len, vjust = -0.5))
Créer des wrappers (fonctions enveloppantes) autour des fonctions ggplot2
aes()
met des guillemets automatiquement autour de tous ses arguments, vous devez donc utiliser la “tidy-evaluation” pour créer des wrappers autour des fonctions ggplot2.
- Cas le plus simple : votre wrappers prend des points
scatter_plot <- function(data, ...) {
ggplot(data) + geom_point(aes(...))
}
scatter_plot(mtcars, disp, drat)
- Votre wrapper a des arguments nommés. Vous avez besoin de “enquote et unquote”
scatter_plot <- function(data, x, y) {
x <- enquo(x)
y <- enquo(y)
ggplot(data) + geom_point(aes(!!x, !!y))
}
scatter_plot(mtcars, disp, drat)
Notez que les utilisateurs de votre wrapper peuvent utiliser leurs propres fonctions dans les expressions avec “quotes” (guillemets).
cut3 <- function(x) cut_number(x, 3)
scatter_plot(mtcars, cut3(disp), drat)
Version: English
No Comments