ggplot2 graphique linéaire : 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.
- 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_density2d() ou stat_density2d() 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_density2d()
# Gradient de couleur
sp + stat_density2d(aes(fill = ..level..), geom="polygon")
# Changer le gradient de couleur
sp + stat_density2d(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_bin2d() pour le comptage du nombre d’observation dans les découpes rectangulaires
- stat_summary2d() pour appliquer des fonctions statistiques sur les découpes 2d
Les formats simplifiés de ces fonctions sont:
plot + geom_bin2d(...)
plot+stat_bin2d(geom=NULL, bins=30)
plot + stat_summary2d(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.1) et le package ggplot2 (ver. 1.0.1)
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!