ggplot2 nuage de points: Guide de démarrage rapide - Logiciel R et visualisation de données



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)







Want to Learn More on R Programming and Data Science?

==> Subscribe to our Mailing List <==

You will receive, by e-mail, a copy of the "Guide to Create Beautiful Graphics in R"
* indicates required


 Get involved :
  Click to follow us on and Google+ :   
  Comment this article by clicking on "Discussion" button (top-right position of this page)
  Sign up as a member and post news and articles on STHDA web site.


Suggestions


ggplot2 légende : Modifier facilement la légende d'un graphique - Logiciel R et visualisation de données
ggplot2 couleurs : Changer les couleurs automatiquement et manuellement - Logiciel R et visualisation de données
ggplot2 graduation des axes : Guide pour personnaliser les étiquettes des graduations - Logiciel R et visualisation de données
ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 échelle et transformation des axes - Logiciel R et visualisation de données
ggplot2 titres : Titre principal, titre des axes et légendes - Logiciel R et visualisation de données
ggplot2 box plot : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 - Combiner plusieurs graphiques sur la même page - Logiciel R et visualisation de données
ggplot2 thèmes et couleurs de fond : les 3 éléments - Logiciel R et visualisation de données
ggplot2 textes : Ajouter du texte à un graphique - Logiciel R et visualisation de données
ggplot2 graphique en camembert: Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 types de points - Logiciel R et visualisation de données
ggplot2 barres d'erreur : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 histogramme : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 - ajouter une ligne droite à un graphe : Ligne horizontale, verticale et droite de régression
ggplot2 graphique linéaire : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2
ggplot2 : heatmap d'une matrice de corrélation - Logiciel R et visualisation de données
ggplot2 type de traits : Comment changer le type de trait d'un graphique avec le logiciel R?
ggplot2 facet : diviser un graphique en plusieurs panneaux - Logiciel R et visualisation de données
ggplot2 dot plot : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 violin plot : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 courbe de distribution : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 stripchart (jitter): Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 pivoter un graphique : Inverser et retourner le graphique - Logiciel R et visualisation de données
ggplot2 ECDF graphique: Guide de démarrage rapide pour la fonction de répartition empirique - Logiciel R et visualisation de données
ggplot2 qq plot (quantile - quantile plot) : Guide de démarrage rapide - Logiciel R et visualisation de données

Cette page a été vue 8355 fois
Licence - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions
Licence Creative Commons