UTILISATION DE GGPLOT2
       

1 considérons un sous échantillon du jeu de données diamonds du package ggplot2 (que l’on peut également charger avec le package tidyverse).

2 Obtenir le nuage de points carat vs price avec la fonction plot.

plot(price~carat,data=diamonds2)

3 Faisons des graphiques avec ggplot (1).

ggplot(diamonds2) 

4 Faisons des graphiques avec ggplot (2).

ggplot(diamonds2)+aes(x=carat,y=price)

5 Faisons des graphiques avec ggplot (3).

ggplot(diamonds2)+aes(x=carat,y=price)+geom_point()

6 Utilisation de data (ggplot) et aesthetics (aes) (1).

ggplot(diamonds2)+aes(x=carat,y=price)

7 Utilisation de data (ggplot) et aesthetics (aes) (2).

ggplot(diamonds2)+aes(x=carat,y=price,color=cut)

    Géométries
    

8 Géométries (geom_point,geom_line,geom_abline,geom_boxplot)(1).

“Pour un nuage de points, on utilisera par exemple geom_point”

ggplot(diamonds2)+aes(x=carat,y=price,color=cut)+geom_point()

9 Géométries (geom_point,geom_line,geom_abline,geom_boxplot)(2).

ggplot(diamonds2)+aes(x=carat,y=price,color=cut)+geom_line()

10 Géométries (geom_point,geom_line,geom_abline,geom_boxplot)(3)

ggplot(diamonds2)+aes(x=carat,y=price,color=cut)+geom_abline()

11 Géométries (geom_point,geom_line,geom_abline,geom_boxplot)(4).

ggplot(diamonds2)+aes(x=carat,y=price,color=cut)+geom_boxplot()

12 Géométries (geom_point,geom_line,geom_abline,geom_boxplot)(5).

ggplot(diamonds2)+aes(x=carat,y=price,color=cut)+geom_area()

13 Géométries (geom_point,geom_line,geom_abline,geom_boxplot)(6).

ggplot(diamonds2)+aes(x=carat,y=price,color=cut)+geom_polygon()

Statistics dans ggplot

14 Des transformations simples avec ggplot (1).

D <- data.frame(X=seq(-2*pi,2*pi,by=0.01))
ggplot(D)+aes(x=X,y=sin(X))+geom_line()

15 Des transformations simples avec ggplot (2).

D <- data.frame(X=seq(-2*pi,2*pi,by=0.01))
ggplot(D)+aes(x=X,y=sin(X))+geom_abline()

16 Des transformations simples avec ggplot (3).

D <- data.frame(X=seq(-2*pi,2*pi,by=0.01))
ggplot(D)+aes(x=X,y=sin(X))+geom_polygon()

17 Des transformations simples avec ggplot (4).

D <- data.frame(X=seq(-2*pi,2*pi,by=0.01))
ggplot(D)+aes(x=X,y=sin(X))+geom_point()

18 Des transformations simples avec ggplot (5).

“Par défaut geom_histogram fait appel à cette fonction stat_bin grâce à l’option stat=”bin”. On visualise ainsi sur l’axe 𝑦 le nombre d’observations dans chaque classe (la variable count)”

ggplot(diamonds2)+aes(x=price)+geom_histogram(bins=40)

19 Des transformations simples avec ggplot (6).

“Si on souhaite une autre variable issue de stat_bin, comme par exemple la densité”

ggplot(diamonds2)+aes(x=price,y=..density..)+geom_histogram(bins=40)
## Warning: The dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(density)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

20 Des transformations simples avec ggplot (7).

ggplot(diamonds2)+aes(x=price,y=..density..)+stat_bin()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

       Scales avec ggplot
       

21 Des transformations simples avec ggplot (8)..

“On utilise généralement ce verbe à la dernière étape de construction du graphe. La syntaxe est définie comme suit : — début : scale_. — ajout de l’aesthetics que l’on souhaite modifier (color_, fill_, x_). — fin : nom de l’échelle (manual, identity…)”

ggplot(diamonds2)+aes(x=carat,y=price,color=cut)+geom_point()+
scale_color_manual(values=c("Fair"="black","Good"="yellow",
"Very Good"="blue","Premium"="red","Ideal"="green"))

22 Des transformations simples avec ggplot (9).

“Couleur dans un diagramme en barres”

p1 <- ggplot(diamonds2)+aes(x=cut)+geom_bar(aes(fill=cut))
p1

23 Des transformations simples avec ggplot (10).

“On change la couleur en utilisant la palette Purples”

p1+scale_fill_brewer(palette="Purples")

24 Des transformations simples avec ggplot (11).

“Gradient de couleurs pour un nuage de points”

p2 <- ggplot(diamonds2)+aes(x=carat,y=price)+geom_point(aes(color=depth))
p2

25 Des transformations simples avec ggplot (12).

“changement du gradient de couleur”

p2+scale_color_gradient(low="red",high="yellow")

26 Des transformations simples avec ggplot (13).

“Modifications sur les axes”

p2+scale_x_continuous(breaks=seq(0.5,3,by=0.5))+
scale_y_continuous(name="prix")+
scale_color_gradient("Profondeur")

     Group et facets avec ggplot
     

27 Des transformations simples avec ggplot (14).

“Représentons ici (sur le même graphe) le lisseur price vs carat pour chaque modalité de cut”

ggplot(diamonds2)+aes(x=carat,y=price,group=cut)+
geom_smooth(method="loess")
## `geom_smooth()` using formula = 'y ~ x'

28 Des transformations simples avec ggplot (15).

“Pour obtenir cette représentation sur plusieurs fenêtres, on utilise”

ggplot(diamonds2)+aes(x=carat,y=price)+
geom_smooth(method="loess")+facet_wrap(~cut)
## `geom_smooth()` using formula = 'y ~ x'

29 Des transformations simples avec ggplot (16).

ggplot(diamonds2)+aes(x=carat,y=price)+
geom_smooth(method="loess")+facet_wrap(~cut,nrow=1)
## `geom_smooth()` using formula = 'y ~ x'

30 Des transformations simples avec ggplot (17).

“acet_grid et facet_wrap font des choses proches mais divisent la fenêtre d’une façon différente”

ggplot(diamonds2)+aes(x=carat,y=price)+geom_point()+
geom_smooth(method="lm")+facet_grid(color~cut)
## `geom_smooth()` using formula = 'y ~ x'

Compléments de graphique avec ggplot

31 Des transformations simples avec ggplot (18).

ggplot(diamonds2)+aes(x=carat,y=price)+geom_point()

32 Des transformations simples avec ggplot (19).

ggplot(diamonds2)+aes(x=carat,y=price)+geom_line()

33 Des transformations simples avec ggplot (20).

ggplot(diamonds2,aes(x=carat,y=price))+geom_boxplot()
## Warning: Continuous x aesthetic
## ℹ did you forget `aes(group = ...)`?

34 Des transformations simples avec ggplot (21).

ggplot(diamonds2)+aes(x=carat,y=price)+geom_polygon()

35 Des transformations simples avec ggplot (22).

ggplot(diamonds2)+geom_point(aes(x=carat,y=price))

36 Des transformations simples avec ggplot (23).

On peut aussi construire un graphe à l’aide de différents jeux de données

X <- seq(-2*pi,2*pi,by=0.001)
Y1 <- cos(X)
Y2 <- sin(X)
donnees1 <- data.frame(X,Y1)
donnees2 <- data.frame(X,Y2)
ggplot(donnees1)+geom_line(aes(x=X,y=Y1))+
geom_line(data=donnees2,aes(x=X,y=Y2),color="red")

37 Des transformations simples avec ggplot (24).

Il existe d’autres fonctions ggplot : — ggtitle: pour ajouter un titre, — ggsave: pour sauver un graphe, — theme_: pour changer le theme du graphe.

p <- ggplot(diamonds2)+aes(x=carat,y=price,color=cut)+geom_point()
p+theme_bw()

38 Des transformations simples avec ggplot (25).

p+theme_classic()

39 Des transformations simples avec ggplot (26).

p+theme_grey()

40 Des transformations simples avec ggplot (27).

p+theme_bw()

D’autres thèmes sont disponibles dans le package ggtheme. On pourra également parler de la fonction set_theme qui permet de modifier le thème par défaut pour un document Markdown.