ggplot2 nuage de points: Guide de démarrage rapide - Logiciel R et visualisation de données
- Pr?parer les donn?es
- Nuage de points simples
- Annoter les points
- Nuage de points avec plusieurs groupes
- Ajoutter la densit? marginale
- Nuage de points avec estimation de la densit? 2d
- Nuage de points avec ellipese
- Nuage de points avec des decoupes rectangulaires
- Nuage de point avec distribution marginale
- Nuages de points personnalis?s
- Infos
Cet article d?crit comment cr?er un nuage de points en utilisant le logiciel de R et le package ggplot2. La fonction geom_point() est utilis?e.
Pr?parer les donn?es
Le jeu de donn?es mtcars est utilis? dans les exemples ci-dessous.
# Convertir la colonne cyl en variable de type facteur
mtcars$cyl <- as.factor(mtcars$cyl)
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
Nuage de points simples
Des nuages de points simples sont cr??s en utilisant le code de R ci-dessous. La couleur, la taille et la forme des points peuvent ?tre modifi?es en utilisant la fonction geom_point() comme suit:
geom_point(size, color, shape)
library(ggplot2)
# Nuage de points simples
ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point()
# Changer la taille et la forme
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point(size=2, shape=23)
Notez que, la taille des points peut ?tre contr?l?e en fonction des valeurs d?une variable continue comme dans l?exemple ci-dessous.
# Changer la taille des points
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point(aes(size=qsec))
Lire plus sur la taille des points : ggplot2 taille des points
Annoter les points
La fonction geom_text() peut ?tre utilis?e:
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point() +
geom_text(label=rownames(mtcars))
Lire plus sur les annotations de textes : ggplot2 - ajoouter du texte au graphique
Ajouter des lignes de regression
Les fonctions ci-dessous peuvent ?tre utilis?es pour ajouter des droites de r?gression ? un nuage de points:
- geom_smooth() et stat_smooth()
- geom_abline()
geom_abline() a d?j? ?t? d?crit ? ce lien: ggplot2 ajouter des lignes droites ? un graphique.
Seule la fonction geom_smooth() est couverte dans cette section.
Un format simplifi? est:
geom_smooth(method="auto", se=TRUE, fullrange=FALSE, level=0.95)
- method : m?thode ? utiliser pour estimer la tendance moyenne. Les valeurs possibles sont lm, glm, gam, loess, rlm.
- method = ?loess?: Valeur par d?faut lorsque le nombre d?observations est petit. Cela calcule une regression locale (loess). Lire plus ? propos de la regression locale en utilisant le code R ?loess.
- method =?lm?: Cela calcule une regression lin?aire. Noter que, il est aussi possible d?indiquer la formule comme suit formula = y ~ poly(x, 3) pour sp?cifier un d?gr? polynomial d?ordre 3.
- se : valeur logique. Si TRUE, l?intervalle de confiance est affich?e autour de la moyenne.
- fullrange : valeur logique. Si TRUE, la courbe moyenne couvre le graphique en entier.
- level : niveau de l?intervalle de confiance ? utiliser. La valeur par d?faut est de 0,95.
# Ajouter la droite de regression
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point()+
geom_smooth(method=lm)
# Supprimer l'intervalle de confiance
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point()+
geom_smooth(method=lm, se=FALSE)
# La m?thode "Loess"
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point()+
geom_smooth()
Changer l?apparence des points et des traits
Cette section d?crit comment modifier:
- la couleur et la forme des points
- le type de trait et la couleur de la droite de r?gression
- la couleur de remplissage de l?intervalle de confiance
# Changer la couleur et la forme des points
# Changer le type de trait et la couleur
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point(shape=18, color="blue")+
geom_smooth(method=lm, se=FALSE, linetype="dashed",
color="darkred")
# Changer la couleur de remplissage de l'intervalle de confiance
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point(shape=18, color="blue")+
geom_smooth(method=lm, linetype="dashed",
color="darkred", fill="blue")
Notez qu?une couleur transparente est utilis?e, par d?faut, pour la bande de confiance. Ceci peut ?tre chang? en utilisant l?argument alpha : geom_smooth(fill=?blue?, alpha=1)
Lire plus sur les types de points : ggplot2 types de points
Lire plus sur les types de traits : ggplot2 types de traits
Nuage de points avec plusieurs groupes
Cette section d?crit comment changer les couleurs et les types de points automatiquement et manuellement.
Changer la couleur/le type/la taille des points automatiquement
Dans le code R ci-dessous, le type de points, la couleur et la taille peuvent ?tre contr?l?es en fonction des niveaux de la variable cyl:
# Changer le type de points en fonction des niveaux de cyl
ggplot(mtcars, aes(x=wt, y=mpg, shape=cyl)) +
geom_point()
# Changer le type et la couleur
ggplot(mtcars, aes(x=wt, y=mpg, shape=cyl, color=cyl)) +
geom_point()
# Changer le type, la couleur et la taille
ggplot(mtcars, aes(x=wt, y=mpg, shape=cyl, color=cyl, size=cyl)) +
geom_point()
Ajouter des droites de r?gression
Des lignes de r?gression peuvent ?tre ajout?es de la mani?re suivante:
# Ajouter des lignes de r?gression
ggplot(mtcars, aes(x=wt, y=mpg, color=cyl, shape=cyl)) +
geom_point() +
geom_smooth(method=lm)
# Supprimer les intervalles de confiance
# Etendre les droites de r?gression
ggplot(mtcars, aes(x=wt, y=mpg, color=cyl, shape=cyl)) +
geom_point() +
geom_smooth(method=lm, se=FALSE, fullrange=TRUE)
Notez que vous pouvez ?galement changer le type de traits de la droite de r?gression en utilisant l?option linetype = cyl.
Les couleurs de remplissage des intervalles de confiances peuvent ?tre chang?es comme suit:
ggplot(mtcars, aes(x=wt, y=mpg, color=cyl, shape=cyl)) +
geom_point() +
geom_smooth(method=lm, aes(fill=cyl))
Changer la couleur/le type/la taille des points manuellement
Les fonctions ci-dessous sont utilis?es:
- scale_shape_manual() pour le type de points
- scale_color_manual() pour la couleur des points
- scale_size_manual() pour la taille des points
# Changer le type de points et la couleur manuellement
ggplot(mtcars, aes(x=wt, y=mpg, color=cyl, shape=cyl)) +
geom_point() +
geom_smooth(method=lm, se=FALSE, fullrange=TRUE)+
scale_shape_manual(values=c(3, 16, 17))+
scale_color_manual(values=c('#999999','#E69F00', '#56B4E9'))+
theme(legend.position="top")
# Changer la taille des points manuellement
ggplot(mtcars, aes(x=wt, y=mpg, color=cyl, shape=cyl))+
geom_point(aes(size=cyl)) +
geom_smooth(method=lm, se=FALSE, fullrange=TRUE)+
scale_shape_manual(values=c(3, 16, 17))+
scale_color_manual(values=c('#999999','#E69F00', '#56B4E9'))+
scale_size_manual(values=c(2,3,4))+
theme(legend.position="top")
Il est ?galement possible de modifier manuellement la couleur des points et des traits en utilisant les fonctions:
- scale_color_brewer() : pour utiliser les palettes de couleurs du package RColorBrewer
- scale_color_grey() : pour utiliser les palettes de couleurs grises
p <- ggplot(mtcars, aes(x=wt, y=mpg, color=cyl, shape=cyl)) +
geom_point() +
geom_smooth(method=lm, se=FALSE, fullrange=TRUE)+
theme_classic()
# Utiliser les palettes brewer
p+scale_color_brewer(palette="Dark2")
# Utiliser les couleurs grises
p + scale_color_grey()
Lire plus sur ggplot2 et couleurs : ggplot2 couleurs
Ajoutter la densit? marginale
La fonction geom_rug() peut ?tre utilis?e:
geom_rug(sides ="bl")
sides : c?t? sur lequel il faudrait ajouter la densit?. La valeur possible est une cha?ne de caract?re contenant l?un des ?l?ments ?trbl?, pour top (haut), right (droite), bottom (bas), et left (gauche).
# Ajouter la densit? marginale
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point() + geom_rug()
# Changer les couleurs
ggplot(mtcars, aes(x=wt, y=mpg, color=cyl)) +
geom_point() + geom_rug()
# Utiliser le jeu de donn?es faithful
ggplot(faithful, aes(x=eruptions, y=waiting)) +
geom_point() + geom_rug()
Nuage de points avec estimation de la densit? 2d
Les fonctions geom_density_2d() ou stat_density_2d() peuvent ?tre utilis?es:
# Nuage de points avec estimation de la densit? 2d
sp <- ggplot(faithful, aes(x=eruptions, y=waiting)) +
geom_point()
sp + geom_density_2d()
# Gradient de couleur
sp + stat_density_2d(aes(fill = ..level..), geom="polygon")
# Changer le gradient de couleur
sp + stat_density_2d(aes(fill = ..level..), geom="polygon")+
scale_fill_gradient(low="blue", high="red")
Lire plus sur ggplot2 et couleurs : ggplot2 couleurs
Nuage de points avec ellipese
La fonction stat_ellipse() peut ?tre utilis?e comme suit:
# Une ellipse autour de tous les points
ggplot(faithful, aes(waiting, eruptions))+
geom_point()+
stat_ellipse()
# Ellipses par groupes
p <- ggplot(faithful, aes(waiting, eruptions, color = eruptions > 3))+
geom_point()
p + stat_ellipse()
# Changer le type d'ellipses:
# Valeurs possibles "t", "norm", "euclid"
p + stat_ellipse(type = "norm")
Nuage de points avec des decoupes rectangulaires
Le nombre d?observations est compt? dans chaque d?coupe et affich? en utilisant l?un des fonctions suivantes:
- geom_bin2d() pour ajouter un heatmap du comptage dans les d?coupes 2d
- stat_bin_2d() pour le comptage du nombre d?observation dans les d?coupes rectangulaires
- stat_summary_2d() pour appliquer des fonctions statistiques sur les d?coupes 2d
Les formats simplifi?s de ces fonctions sont:
plot + geom_bin2d(...)
plot+stat_bin_2d(geom=NULL, bins=30)
plot + stat_summary_2d(geom = NULL, bins = 30, fun = mean)
- geom : l?objet g?om?trique ? afficher
- bins : Nombre de d?coupes verticale et horizontale. La valeur par d?faut est 30
- fun : fonction pour une description statistique
Le jeux e donn?es diamonds, dans le package ggplot2, est utilis? :
head(diamonds)
## carat cut color clarity depth table price x y z
## 1 0.23 Ideal E SI2 61.5 55 326 3.95 3.98 2.43
## 2 0.21 Premium E SI1 59.8 61 326 3.89 3.84 2.31
## 3 0.23 Good E VS1 56.9 65 327 4.05 4.07 2.31
## 4 0.29 Premium I VS2 62.4 58 334 4.20 4.23 2.63
## 5 0.31 Good J SI2 63.3 58 335 4.34 4.35 2.75
## 6 0.24 Very Good J VVS2 62.8 57 336 3.94 3.96 2.48
# Graphique
p <- ggplot(diamonds, aes(carat, price))
p + geom_bin2d()
Changer le nombre de d?coupes:
# Changer le nombre de d?coupes
p + geom_bin2d(bins=10)
Ou sp?cifie la largeur des d?coupes:
# Sp?cifier la largeur des d?coupes
p + geom_bin2d(binwidth=c(1, 1000))
Nuage de point avec distribution marginale
Step 1/3. Cr?er des donn?es:
set.seed(1234)
x <- c(rnorm(500, mean = -1), rnorm(500, mean = 1.5))
y <- c(rnorm(500, mean = 1), rnorm(500, mean = 1.7))
group <- as.factor(rep(c(1,2), each=500))
df <- data.frame(x, y, group)
head(df)
## x y group
## 1 -2.20706575 -0.2053334 1
## 2 -0.72257076 1.3014667 1
## 3 0.08444118 -0.5391452 1
## 4 -3.34569770 1.6353707 1
## 5 -0.57087531 1.7029518 1
## 6 -0.49394411 -0.9058829 1
Step 2/3. Cr?er des graphiques:
# Nuage de points color?s par groupes
scatterPlot <- ggplot(df,aes(x, y, color=group)) +
geom_point() +
scale_color_manual(values = c('#999999','#E69F00')) +
theme(legend.position=c(0,1), legend.justification=c(0,1))
scatterPlot
# Courbe de densit? marginale de x (panel du haut)
xdensity <- ggplot(df, aes(x, fill=group)) +
geom_density(alpha=.5) +
scale_fill_manual(values = c('#999999','#E69F00')) +
theme(legend.position = "none")
xdensity
# Courbe de densit? marginale de y (panel de droite)
ydensity <- ggplot(df, aes(y, fill=group)) +
geom_density(alpha=.5) +
scale_fill_manual(values = c('#999999','#E69F00')) +
theme(legend.position = "none")
ydensity
Cr?er un emplacement vide :
blankPlot <- ggplot()+geom_blank(aes(1,1))+
theme(plot.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.background = element_blank(),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.text.x = element_blank(),
axis.text.y = element_blank(),
axis.ticks = element_blank()
)
Step 3/3. Regrouper les graphiques:
Pour mettre plusieurs graphiques sur la m?me page, le package gridExtra peut ?tre utilis?. Installez le package comme suit:
install.packages("gridExtra")
Arranger le graphique avec des largeurs et des hauteurs adapt?es pour chaque ligne et chaque colonne:
library("gridExtra")
grid.arrange(xdensity, blankPlot, scatterPlot, ydensity,
ncol=2, nrow=2, widths=c(4, 1.4), heights=c(1.4, 4))
Lire plus sur comment arranger plusieurs graphiques sur la m?me page : ggplot2 - Arranger plusieurs graphiques sur la m?me page
Nuages de points personnalis?s
# Nuage de points simple
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point()+
geom_smooth(method=lm, color="black")+
labs(title="Miles per gallon \n according to the weight",
x="Weight (lb/1000)", y = "Miles/(US) gallon")+
theme_classic()
# Changer la couleur/ le type par groupe
# Supprimer l'intervalle de confiance
p <- ggplot(mtcars, aes(x=wt, y=mpg, color=cyl, shape=cyl)) +
geom_point()+
geom_smooth(method=lm, se=FALSE, fullrange=TRUE)+
labs(title="Miles per gallon \n according to the weight",
x="Weight (lb/1000)", y = "Miles/(US) gallon")
p + theme_classic()
Changer les couleurs manuellement
# Couleurs continues
p + scale_color_brewer(palette="Paired") + theme_classic()
# Couleurs discr?tes
p + scale_color_brewer(palette="Dark2") + theme_minimal()
# Couleurs en gradient
p + scale_color_brewer(palette="Accent") + theme_minimal()
Lire plus sur ggplot2 et couleurs : 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)
Show me some love with the like buttons below... Thank you and please don't forget to share and comment below!!
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!
Recommended for You!
Click to follow us on Facebook:
Comment this article by clicking on "Discussion" button (top-right position of this page)