## 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 ggplot(data = <DATA.FRAME>, # chargement des données aes(x=<VARIABLE1>, # définition des aesthetics (aes) y=<VARIABLE2>, # = échelles ...), # grand nombre d'aesthetics existent ) + geom_<*>() ``` --- # Ressources ### Reference: [https://ggplot2.tidyverse.org/reference/]() ### aesthetics: [https://frama.link/tidyverse-aesthetics]() --- ## La base .small[ ```r data("iris") ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) ``` ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-2-1.png)<!-- --> ] --- ## Ajouter une geometrie .small[ ```r ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) + # le plus ajoute un layer * geom_point() ``` ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-3-1.png)<!-- --> ] --- ## Ajouter une géométrie [2] .small[ ```r ggplot(iris) + * geom_point(aes(x=Sepal.Length, * y=Sepal.Width)) ``` ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-4-1.png)<!-- --> ] --- # Ajouter un encodage (aesthetics) .small[ ```r ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, * color = Species)) + geom_point() ``` ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-5-1.png)<!-- --> ] --- ## Ajouter une 2ème géométrie .small[ ```r ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color = Species)) + geom_point() + * geom_smooth() ``` ``` ## `geom_smooth()` using method = 'loess' and formula 'y ~ x' ``` ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-6-1.png)<!-- --> ] --- ## Régler les options de la géométrie .small[ ```r ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color = Species)) + geom_point() + * geom_smooth(method='lm', se=FALSE) ``` ``` ## `geom_smooth()` using formula 'y ~ x' ``` ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-7-1.png)<!-- --> ] --- ## Ajouter une facette .small[ ```r ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color = Species)) + geom_point() + geom_smooth(method='lm', se=FALSE) + * facet_grid(~Species) ``` ``` ## `geom_smooth()` using formula 'y ~ x' ``` ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-8-1.png)<!-- --> ] --- ## Régler le thème .small[ ```r ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color = Species)) + geom_point() + geom_smooth(method='lm', se=FALSE) + facet_grid(~Species) + * theme_minimal() ``` ``` ## `geom_smooth()` using formula 'y ~ x' ``` ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-9-1.png)<!-- --> ] --- ## 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" * ) ``` ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-10-1.png)<!-- --> ] --- ## 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")) ``` ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-11-1.png)<!-- --> ] --- ## 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") ``` ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-12-1.png)<!-- --> ] --- # 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)