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)


Enjoyed this article? I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Twitter, Facebook or Linked In.

Show me some love with the like buttons below... Thank you and please don't forget to share and comment below!!
Avez vous aimé cet article? Je vous serais très reconnaissant si vous aidiez à sa diffusion en l'envoyant par courriel à un ami ou en le partageant sur Twitter, Facebook ou Linked In.

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!





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