--- title: "Introduction ggplot2" author: "Antoine Neuraz" date: "18/11/2019" output: xaringan::moon_reader: css: ['default','css/my_style.css'] lib_dir: libs seal: false nature: ratio: '4:3' countIncrementalSlides: false self-contained: true beforeInit: "addons/macros.js" highlightLines: true --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE, fig.asp= .5) library(ggplot2) ``` ## ggplot2 implémente la grammaire de la visualisation ## Les essentiels ### Data: Données source. -- ### Geoms: Marques de la visualisation (points, lignes, ...) -- ### Scales: Echelles de la visualisation (position, taille, couleur,...) --- ## ggplot2 implémente la grammaire de la visualisation ## Les bonus ### Stats: Opérations de modification des données sources (moyenne, ...) -- ### Faceting: Découpe le dataset pour créer des sous-graphes -- ### Coordinates: système de coordonnées de la visualisation --- class: # Architecture d'un graph avec ggplot2 ```{r, eval = FALSE} ggplot(data = , # chargement des données aes(x=, # définition des aesthetics (aes) y=, # = échelles ...), # grand nombre d'aesthetics existent ) + geom_<*>() ``` --- # Ressources ### Reference: [https://ggplot2.tidyverse.org/reference/]() ### aesthetics: [https://frama.link/tidyverse-aesthetics]() --- ## La base .small[ ```{r, fig.asp=0.7} data("iris") ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) ``` ] --- ## Ajouter une geometrie .small[ ```{r, fig.asp=0.7} ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) + # le plus ajoute un layer geom_point() #<< ``` ] --- ## Ajouter une géométrie [2] .small[ ```{r, fig.asp=0.7} ggplot(iris) + geom_point(aes(x=Sepal.Length, #<< y=Sepal.Width)) #<< ``` ] --- # Ajouter un encodage (aesthetics) .small[ ```{r, fig.asp=0.7} ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color = Species)) + #<< geom_point() ``` ] --- ## Ajouter une 2ème géométrie .small[ ```{r, fig.asp=0.7} ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color = Species)) + geom_point() + geom_smooth() #<< ``` ] --- ## Régler les options de la géométrie .small[ ```{r, fig.asp=0.7} ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color = Species)) + geom_point() + geom_smooth(method='lm', se=FALSE) #<< ``` ] --- ## Ajouter une facette .small[ ```{r, fig.asp=0.7} ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color = Species)) + geom_point() + geom_smooth(method='lm', se=FALSE) + facet_grid(~Species) #<< ``` ] --- ## Régler le thème .small[ ```{r, fig.asp=0.7} ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color = Species)) + geom_point() + geom_smooth(method='lm', se=FALSE) + facet_grid(~Species) + theme_minimal() #<< ``` ] --- ## Régler les titres et labels .small[ ```{r} ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color = Species)) + geom_point()+ theme_minimal() + labs(title = "Sépales des iris", #<< subtitle = "Longueur et largeur des sépales* en fonction de l'espèce", #<< x= "Longueur", #<< y = "Largeur", #<< caption = "* Chacune des pièces du calice de la fleur. / source: Iris dataset" #<< ) #<< ``` ] --- ## Ajuster la légende .small[ ```{r} ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color = Species)) + geom_point()+ theme_minimal() + labs(title = "Sépales des iris", subtitle = "Longueur et largeur des sépales* en fonction de l'espèce", x= "Longueur", y = "Largeur", caption = "* Chacune des pièces du calice de la fleur. / source: Iris dataset" ) + guides(color = guide_legend(title = "Espèce")) #<< ``` ] --- ## Paufiner le thème .small[ ```{r} ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color = Species)) + geom_point()+ theme_minimal() + labs(title = "Sépales des iris", subtitle = "Longueur et largeur des sépales* en fonction de l'espèce", x= "Longueur", y = "Largeur", caption = "* Chacune des pièces du calice de la fleur. / source: Iris dataset" ) + guides(color = guide_legend(title = "Espèce")) + theme(panel.grid.minor = element_blank(), #<< legend.position = "bottom") #<< ``` ] --- # A l'aide !!! ### site du tidyverse: [https://ggplot2.tidyverse.org]() ### R for datascience: [https://r4ds.had.co.nz/]() ### stackoverfow: [https://stackoverflow.com]() ### votre moteur de recherche préféré --- # TODO ### Ouvrir le dataset "mtcars" ### représenter le "Gross horsepower" en fonction du nombre de cylindres ### utiliser l'encodage multiple sur le nombre de cylindres ### ajouter l'information du nombre de carburateurs ### Paufiner le plot (axes, titres, thème) --- # TODO 2 ### représenter la distribution du nombre de miles per gallon en histogramme ### représenter la distribution du nombre de miles per gallon en boxplot ### representer la distribution du nombre de miles per gallon en fonction du nombre de cylindres ### ajouter les points par dessus la distribution ### paufiner le plot (axes, titres, thème)