class: title-slide, center, middle <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.0/css/all.css" integrity="sha384-aOkxzJ5uQz7WBObEZcHvV5JvRW3TUc2rNPA7pe3AwnsUohiw1Vj2Rgx2KSOkF5+h" crossorigin="anonymous"> <style> .center2 { margin: 0; position: absolute; top: 50%; left: 50%; -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); } .rcorners1 { margin: auto; border-radius: 25px; background: #ada500; padding: 10px; # width: 50%; } </style> <style type="text/css"> .right-column{ padding-top: 0; } .remark-code, .remark-inline-code { font-family: 'Source Code Pro', 'Lucida Console', Monaco, monospace; font-size: 90%; } </style> <div class="my-logo-left"> <img src="img/UA-eng-hor-1-RGB.jpg" width="110%"/> </div> <div class="my-logo-right"> <img src="img/logo_VLHORA.svg" width="110%"/> </div> # INPUT - OUTPUT Workshop R & RStudio .font160[ .SW-greenD[Deel 4] ] .font120[ .SW-greenD[*Krachtige visualisaties met*] .UA-red[*`ggplot2`*] ] Sven De Maeyer .font80[ .UA-red[ 03/05/2022 ] ] --- class: inverse-green, left # Overzicht .center2[ - Eenvoudige plotjes in R --- ([doorklikken](#part1)) - Grammar of graphics --- ([doorklikken](#part2)) - Hoe werkt `ggplot2`? --- ([doorklikken](#part3)) - Categorische variabelen visualiseren --- ([doorklikken](#part4)) - Kwantitatieve variabelen visualiseren --- ([doorklikken](#part5)) - Samenhang visualiseren --- ([doorklikken](#part6)) ] --- class: inverse-green, center, middle name: part1 # 1. Eenvoudige plotjes in R --- ## Plotjes uit .UA-red[`base`] De generieke .UA-red[`plot()`] functie ```r plot(RIASEC$age) ``` <img src="Slides_Deel4_files/figure-html/unnamed-chunk-2-1.png" width="288" /> --- ## Plotjes uit .UA-red[`base`] De generieke .UA-red[`plot()`] functie ```r plot(table(RIASEC$Geslacht)) ``` <img src="Slides_Deel4_files/figure-html/unnamed-chunk-3-1.png" width="288" /> --- ## Plotjes uit .UA-red[`base`] De generieke .UA-red[`plot()`] functie ```r plot(RIASEC$age, RIASEC$Conventional) ``` <img src="Slides_Deel4_files/figure-html/unnamed-chunk-4-1.png" width="360" /> --- ## Plotjes uit .UA-red[`base`] De .UA-red[`boxplot()`] functie ```r boxplot(RIASEC$Conventional) ``` <img src="Slides_Deel4_files/figure-html/unnamed-chunk-5-1.png" width="360" /> --- ## Plotjes uit .UA-red[`base`] De .UA-red[`hist()`] functie ```r hist(RIASEC$Conventional) ``` <img src="Slides_Deel4_files/figure-html/unnamed-chunk-6-1.png" width="360" /> --- class: inverse-green, center, middle name: part2 # 2. Grammar of Graphics --- ## Een meer theoretische benadering van grafieken .left-column[ <img src="Grammar_of_Graphics_cover.jpeg" width="70%" height="70%" /> ] .right-colum[ <br> <br> <br> - Theoretisch uiteenrafelen van data visualisaties - Vormt de basis van verschillende moderne grafische applicaties: - ggplot2 - Tableau (Polaris) - Vega-Lite ] .footnote[*Slide gebaseerd op slides van Thomas Lin Pedersen https://github.com/thomasp85/ggplot2_workshop/blob/master/presentation.pdf*] --- ## Centraal idee achter Grammar of Graphics <img src="Slides_TP_1.jpg" width="70%" height="70%" /> .footnote[*Slide uit slideshow van Thomas Lin Pedersen https://github.com/thomasp85/ggplot2_workshop/blob/master/presentation.pdf*] --- ## Grammar of Graphics: .SW-greenD[Data] - Data is niet enkel ruwe dataset (kan ook waarden van schattingen op basis van anlayses zijn) <br> <table> <thead> <tr> <th style="text-align:left;"> Group </th> <th style="text-align:left;"> Country </th> <th style="text-align:left;"> Gender </th> <th style="text-align:right;"> Mean_age </th> <th style="text-align:right;"> Sd_age </th> <th style="text-align:right;"> CI_lower </th> <th style="text-align:right;"> CI_upper </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> BE Male </td> <td style="text-align:left;"> BE </td> <td style="text-align:left;"> Male </td> <td style="text-align:right;"> 39 </td> <td style="text-align:right;"> 11.0 </td> <td style="text-align:right;"> 17.44 </td> <td style="text-align:right;"> 60.56 </td> </tr> <tr> <td style="text-align:left;"> BE Female </td> <td style="text-align:left;"> BE </td> <td style="text-align:left;"> Female </td> <td style="text-align:right;"> 41 </td> <td style="text-align:right;"> 13.2 </td> <td style="text-align:right;"> 15.13 </td> <td style="text-align:right;"> 66.87 </td> </tr> <tr> <td style="text-align:left;"> BE Other </td> <td style="text-align:left;"> BE </td> <td style="text-align:left;"> Other </td> <td style="text-align:right;"> 36 </td> <td style="text-align:right;"> 8.2 </td> <td style="text-align:right;"> 19.93 </td> <td style="text-align:right;"> 52.07 </td> </tr> <tr> <td style="text-align:left;"> NL Male </td> <td style="text-align:left;"> NL </td> <td style="text-align:left;"> Male </td> <td style="text-align:right;"> 37 </td> <td style="text-align:right;"> 12.0 </td> <td style="text-align:right;"> 13.48 </td> <td style="text-align:right;"> 60.52 </td> </tr> <tr> <td style="text-align:left;"> NL Female </td> <td style="text-align:left;"> NL </td> <td style="text-align:left;"> Female </td> <td style="text-align:right;"> 36 </td> <td style="text-align:right;"> 14.0 </td> <td style="text-align:right;"> 8.56 </td> <td style="text-align:right;"> 63.44 </td> </tr> <tr> <td style="text-align:left;"> NL Other </td> <td style="text-align:left;"> NL </td> <td style="text-align:left;"> Other </td> <td style="text-align:right;"> 31 </td> <td style="text-align:right;"> 7.2 </td> <td style="text-align:right;"> 16.89 </td> <td style="text-align:right;"> 45.11 </td> </tr> </tbody> </table> - Data hoort 'tidy' te zijn (enkel rijen en kolommen) --- ## Grammar of Graphics: .SW-greenD[Mapping] `\(=\)` Verbinden van elementen van een grafiek met de Data <br> .SW-greenD[*Aesthetic* mapping] `\(=\)` de link tussen waarden voor een variabele in de Data en de 'geometry' (bv. hoogte van een balk; x-positie van een punt; kleur van punt; dikte van een punt; vorm van een punt) <br> .SW-greenD[*Facet* mapping] `\(=\)` de link tussen waarden voor een variabele in de Data en de panelen die in een grafiek worden onderscheiden (bv. apart paneel per land) --- ## Grammar of Graphics: .SW-greenD[Statistics] - Data is misschien wel `tidy`, maar wil niet zeggen dat de data-input van een graphic al meteen de juiste waarden bevatten die dienen te worden weergegeven - Bv. eerst beschrijvende statistieken berekenen om een boxplot te kunnen plotten - Bv. eerst een lineair (of ander) model schatten om een lijn doorheen puntenwolk te trekken - Vaak impliciet achter bepaalde types van grafieken --- ## Grammar of Graphics: .SW-greenD[Scales] - Data dient te worden vertaald naar 'grafische eigenschappen' (= Scales) - Voorbeelden: - Categorieën `\(\rightarrow\)` Kleuren; - Categorieën `\(\rightarrow\)` Vorm (driehoekje; bolletje; kruisje; ...); - Nummers `\(\rightarrow\)` Plaats (x- en y- coördinaten); - Nummers `\(\rightarrow\)` Grootte; - ... - Implicatie is dat waarde moeten op een bepaalde wijze geïnterpreteerd worden: discrete; continuous; ... --- ## Grammar of Graphics: .SW-greenD[Geometries] - Welke geometrische vormen zijn de basis van de grafische representatie? - Voorbeelden: - punten op een x- en y-assen stelsel; - boxplots; - polygonen; - een lijn; - ... --- ## Grammar of Graphics: .SW-greenD[Facets] - Hoeveel panelen worden weergegeven? - Hoe de panelen te definiëren? --- class: inverse-green, center, middle name: part3 # 3. Hoe werkt `ggplot2`? --- <div class="my-logo-right"> <img src="palmerpenguins_hex.png" width="100%"/> </div> ## Tijd om de pinguïns erbij te halen... Leuke data (Bron: https://allisonhorst.github.io/palmerpenguins/articles/intro.html) ```r install.packages("palmerpenguins") library(palmerpenguins) data("penguins") ``` <img src="lter_penguins.png" width="50%" height="50%" /> <p align="right">.footnotesize[.SW-greenD[*Artwork by @allison_horst*]] </p> --- <div class="my-logo-right"> <img src="palmerpenguins_hex.png" width="100%"/> </div> ## Tijd om de pinguïns erbij te halen... <table> <caption>Table 1. Random sample of 10 observations from the Palmer Pinguins dataset</caption> <thead> <tr> <th style="text-align:left;"> species </th> <th style="text-align:left;"> island </th> <th style="text-align:right;"> bill_length_mm </th> <th style="text-align:right;"> bill_depth_mm </th> <th style="text-align:right;"> flipper_length_mm </th> <th style="text-align:right;"> body_mass_g </th> <th style="text-align:left;"> sex </th> <th style="text-align:right;"> year </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> Gentoo </td> <td style="text-align:left;"> Biscoe </td> <td style="text-align:right;"> 47.4 </td> <td style="text-align:right;"> 14.6 </td> <td style="text-align:right;"> 212 </td> <td style="text-align:right;"> 4725 </td> <td style="text-align:left;"> female </td> <td style="text-align:right;"> 2009 </td> </tr> <tr> <td style="text-align:left;"> Adelie </td> <td style="text-align:left;"> Torgersen </td> <td style="text-align:right;"> 35.1 </td> <td style="text-align:right;"> 19.4 </td> <td style="text-align:right;"> 193 </td> <td style="text-align:right;"> 4200 </td> <td style="text-align:left;"> male </td> <td style="text-align:right;"> 2008 </td> </tr> <tr> <td style="text-align:left;"> Adelie </td> <td style="text-align:left;"> Dream </td> <td style="text-align:right;"> 40.2 </td> <td style="text-align:right;"> 17.1 </td> <td style="text-align:right;"> 193 </td> <td style="text-align:right;"> 3400 </td> <td style="text-align:left;"> female </td> <td style="text-align:right;"> 2009 </td> </tr> <tr> <td style="text-align:left;"> Gentoo </td> <td style="text-align:left;"> Biscoe </td> <td style="text-align:right;"> 45.3 </td> <td style="text-align:right;"> 13.7 </td> <td style="text-align:right;"> 210 </td> <td style="text-align:right;"> 4300 </td> <td style="text-align:left;"> female </td> <td style="text-align:right;"> 2008 </td> </tr> <tr> <td style="text-align:left;"> Adelie </td> <td style="text-align:left;"> Biscoe </td> <td style="text-align:right;"> 39.7 </td> <td style="text-align:right;"> 17.7 </td> <td style="text-align:right;"> 193 </td> <td style="text-align:right;"> 3200 </td> <td style="text-align:left;"> female </td> <td style="text-align:right;"> 2009 </td> </tr> <tr> <td style="text-align:left;"> Adelie </td> <td style="text-align:left;"> Biscoe </td> <td style="text-align:right;"> 38.2 </td> <td style="text-align:right;"> 18.1 </td> <td style="text-align:right;"> 185 </td> <td style="text-align:right;"> 3950 </td> <td style="text-align:left;"> male </td> <td style="text-align:right;"> 2007 </td> </tr> <tr> <td style="text-align:left;"> Adelie </td> <td style="text-align:left;"> Dream </td> <td style="text-align:right;"> 40.2 </td> <td style="text-align:right;"> 20.1 </td> <td style="text-align:right;"> 200 </td> <td style="text-align:right;"> 3975 </td> <td style="text-align:left;"> male </td> <td style="text-align:right;"> 2009 </td> </tr> <tr> <td style="text-align:left;"> Adelie </td> <td style="text-align:left;"> Biscoe </td> <td style="text-align:right;"> 39.0 </td> <td style="text-align:right;"> 17.5 </td> <td style="text-align:right;"> 186 </td> <td style="text-align:right;"> 3550 </td> <td style="text-align:left;"> female </td> <td style="text-align:right;"> 2008 </td> </tr> <tr> <td style="text-align:left;"> Adelie </td> <td style="text-align:left;"> Torgersen </td> <td style="text-align:right;"> 38.6 </td> <td style="text-align:right;"> 21.2 </td> <td style="text-align:right;"> 191 </td> <td style="text-align:right;"> 3800 </td> <td style="text-align:left;"> male </td> <td style="text-align:right;"> 2007 </td> </tr> <tr> <td style="text-align:left;"> Adelie </td> <td style="text-align:left;"> Torgersen </td> <td style="text-align:right;"> 36.2 </td> <td style="text-align:right;"> 17.2 </td> <td style="text-align:right;"> 187 </td> <td style="text-align:right;"> 3150 </td> <td style="text-align:left;"> female </td> <td style="text-align:right;"> 2009 </td> </tr> </tbody> </table> --- ## De basis .UA-red[`ggplot2`] .pull-left[ ```r Plot <- ggplot( ## Stap 1: de Data data = penguins, ## Stap 2: Mapping aes( x = flipper_length_mm, y = body_mass_g) ) Plot ``` ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-14-1.png" width="360" /> ] --- ## De basis .UA-red[`ggplot2`] .pull-left[ ```r Plot <- ggplot( ## Stap 1: de Data data = penguins, ## Stap 2: Mapping aes( x = flipper_length_mm, y = body_mass_g) ) + ## Stap 3: Geometries toevoegen geom_point() Plot ``` ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-16-1.png" width="360" /> ] Merk op dat we enkel stappen van de *Grammar of Graphics* niet dienden te definiëren omdat ze allen logische *default* waarden hebben --- ## De basis .UA-red[`ggplot2`] met meerdere .UA-red[facets] .pull-left[ ```r Plot <- ggplot( ## Stap 1: de Data data = penguins, ## Stap 2: Mapping aes( x = flipper_length_mm, y = body_mass_g) ) + ## Stap 3: Geometries toevoegen geom_point() + ## Stap 4: Facets definiëren facet_wrap(.~species) Plot ``` ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-18-1.png" width="360" /> ] --- ## Een visualisatie laten 'groeien' door laagjes toe te voegen ... <img src="Slides_Deel4_files/figure-html/unnamed-chunk-19-1.png" width="1152" style="display: block; margin: auto;" /> --- ## De verschillende .UA-red[`geom_*`] opties <img src="ggplot2_cheatsheet.jpg" width="50%" height="50%" /> De *cheatsheet*: https://github.com/rstudio/cheatsheets/blob/main/data-visualization-2.1.pdf --- class: inverse-green, center, middle name: part4 # 4. Categorische variabele visueel samenvatten met .UA-red[`ggplot2`] .white[*"de bar is open" *] --- ## Barplot maken met .UA-red[`geom_bar()`] .pull-left[ - `species` op de x-as zetten - `geom_bar()` - op de achtergrond worden aantallen automatisch geteld (= `stat_count()`) .footnotesize[ ```r ggplot(penguins, aes( x = species )) + geom_bar() ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-22-1.png" width="360" /> ] --- ## Barplot maken met .UA-red[ `geom_col()`] .pull-left[ - Heb je reeds samengevatte data, dan kan je `geom_col()` hanteren. ```r Teldata <- penguins %>% count(species, name = 'Aantal') ggplot(Teldata, aes( x = species, y = Aantal )) + geom_col() ``` ``` ## # A tibble: 3 × 2 ## species Aantal ## <fct> <int> ## 1 Adelie 152 ## 2 Chinstrap 68 ## 3 Gentoo 124 ``` ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-25-1.png" width="360" /> ] --- ## Barplot maken met .UA-red[ `geom_bar()`] .pull-left[ - Kleur toevoegen door een extra *schaal* te definiëren: de .SW-greenD[`fill`] .footnotesize[ ```r ggplot(penguins, aes( x = species )) + geom_bar( ## Extra mapping: de "fill" schaal aes(fill = species) ) ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-27-1.png" width="360" /> ] --- ## Barplot maken met .UA-red[ `geom_bar()`] .pull-left[ - Kleurenpallette manueel bepalen adhv extra laag met .SW-greenD[`scale_fill_manual()`] .footnotesize[ ```r ggplot(penguins, aes( x = species )) + geom_bar( aes(fill = species) ) + # Zelf kleuren kiezen scale_fill_manual( values = c("darkorange","purple","cyan4") ) ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-29-1.png" width="360" /> ] --- ## Barplot maken met .UA-red[ `geom_bar()`] .pull-left[ - titels toevoegen/veranderen met extra laag .SW-greenD[`labs()`] .footnotesize[ ```r ggplot(penguins, aes( x = species )) + geom_bar( aes(fill = species) ) + scale_fill_manual( values = c("darkorange","purple","cyan4") ) + # Labs laag voor titels en x-as label labs( title = "Palmer penguins", subtitle = "n observations for species", x = "" ) ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-31-1.png" width="360" /> ] --- ## Barplot maken met .UA-red[ `geom_bar()`] .pull-left[ - ander *theme* hanteren .SW-greenD[`theme_minimal()`] .footnotesize[ ```r ggplot(penguins, aes( x = species )) + geom_bar( aes(fill = species) ) + scale_fill_manual( values = c("darkorange","purple","cyan4") ) + labs( title = "Palmer penguins", subtitle = "n observations for species", x = "" ) + # Ander thema kiezen theme_minimal() ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-33-1.png" width="360" /> ] --- ## Barplot maken met .UA-red[ `geom_bar()`] .pull-left[ - de richting omdraaien .SW-greenD[`coord_flip()`] - legende verwijderen .SW-greenD[`theme(legend.position = "none")`] .footnotesize[ ```r ggplot(penguins, aes( x = species )) + geom_bar( aes(fill = species) ) + scale_fill_manual( values = c("darkorange","purple","cyan4") ) + labs( title = "Palmer penguins", subtitle = "n observations for species", x = "" ) + coord_flip( ) + theme_minimal( ) + theme( legend.position = "none" ) ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-35-1.png" width="360" /> ] --- ## Kleuren kiezen ... <img src="colours_ggplot.jpg" width="70%" height="70%" /> http://www.cookbook-r.com/Graphs/Colors_(ggplot2)/ --- class: inverse-blue # <i class="fas fa-laptop-code" style="color: #FF0035;"></i> Oefeningen `[ggplot2]` : deel 1 .left-column[  ] .right-column[ - Op Dropbox vind je een document .SW-greenD[ `Oefening_ggplot2.Rmd`] - Plaats dit document op je pc - Open vervolgens het bestand in `R Studio` - Het document bevat een set van opdrachten met telkens lege code blokken - Bedoeling is dat je de juiste code schrijft (en test door te laten lopen) om deze opdrachten uit te voeren - Zit je vast? No Worries! - Ik ben er - Je hebt elkaar - Er is een oplossingssleutel .SW-greenD[`Oefening_ggplot2_oplossing.Rmd`] ] --- class: inverse-green, center, middle name: part5 # 5. Kwantitatieve variabelen visualiseren met .UA-red[`ggplot2`] --- ## Histogram met .UA-red[`geom_histogram()`] .pull-left[ .footnotesize[ ```r ggplot(penguins, aes( x = flipper_length_mm, )) + geom_histogram() ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-38-1.png" width="360" /> ] --- ## Histogram met .UA-red[`geom_histogram()`] .pull-left[ + gepimpte versie .footnotesize[ ```r ggplot(penguins, aes( x = flipper_length_mm, fill = species )) + geom_histogram( alpha = .7 ) + scale_fill_manual( values = c("darkorange","purple","cyan4") ) + labs( title = "Palmer penguins", subtitle = "Histogram voor flipper lengte", x = "Flipper lengte" ) + theme_minimal() ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-40-1.png" width="360" /> ] --- ## Density plot met .UA-red[`geom_density()`] .pull-left[ + density plot (oppervlakte onder de curve = 100%) .footnotesize[ ```r ggplot(penguins, aes( x = flipper_length_mm, fill = species )) + geom_density( alpha = .7 ) + scale_fill_manual( values = c("darkorange","purple","cyan4") ) + labs( title = "Palmer penguins", subtitle = "Density plot voor flipper lengte", x = "Flipper lengte" ) + theme_minimal() ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-42-1.png" width="360" /> ] --- ## Of beter nog .UA-red[`geom_violin()` + `geom_jitter()`] .pull-left[ .footnotesize[ ```r ggplot(penguins, aes( x = species, y = flipper_length_mm, fill = species, color = species )) + geom_violin( alpha = .65 ) + geom_jitter( alpha = .7 ) + scale_fill_manual( values = c("darkorange","purple","cyan4") ) + scale_color_manual( values = c("darkorange","purple","cyan4") ) + labs( title = "Palmer penguins", subtitle = "Density plot voor flipper lengte", y = "Flipper lengte", x = "", ) + theme_minimal() + theme(legend.position = "none") ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-44-1.png" width="360" /> ] --- ## Of een *raincloud plot* <img src="Slides_Deel4_files/figure-html/unnamed-chunk-45-1.png" width="432" style="display: block; margin: auto;" /> .footnote[*Gebaseerd op de tutorial van Cédric Scherer: https://www.cedricscherer.com/*] --- name: raincloud ## Of een *raincloud plot* ([Appendix 1: regenwolken laten groeien](#appendix1)) Extra pakket nodig: .UA-red[`ggdist`] .footnotesize[ ```r library(ggdist) ggplot(penguins, aes(x = species, y = flipper_length_mm)) + stat_halfeye( adjust = .5, width = .6, .width = 0, justification = -.2, point_colour = NA ) + geom_boxplot( width = .15, outlier.shape = NA ) + geom_point( size = 1.3, alpha = .3, position = position_jitter( seed = 1, width = .1 )) + labs( title = "Palmer penguins", subtitle = "Verdeling van flipper lengte per soort", x = "", y = "flipper lengte" ) + coord_cartesian(xlim = c(1.2, NA), clip = "off") + coord_flip() + theme_minimal() ``` ] --- class: inverse-blue # <i class="fas fa-laptop-code" style="color: #FF0035;"></i> Oefeningen `[ggplot2]` : deel 2 .left-column[  ] .right-column[ - Op Dropbox vind je een document .SW-greenD[ `Oefening_ggplot2.Rmd`] - Plaats dit document op je pc - Open vervolgens het bestand in `R Studio` - Het document bevat een set van opdrachten met telkens lege code blokken - Bedoeling is dat je de juiste code schrijft (en test door te laten lopen) om deze opdrachten uit te voeren - Zit je vast? No Worries! - Ik ben er - Je hebt elkaar - Er is een oplossingssleutel .SW-greenD[`Oefening_ggplot2_oplossing.Rmd`] ] --- class: inverse-green, center, middle name: part6 # 6. Samenhang visualiseren met .UA-red[`ggplot2`] --- ## De puntenwolk met .UA-red[`geom_point()`] .pull-left[ .footnotesize[ ```r ggplot(penguins, aes( x = body_mass_g, y = flipper_length_mm )) + geom_point( ) + labs( title = "Palmer penguins", subtitle = "Samenhang tussen flipper lengte en body mass", y = "Flipper lengte", x = "Body mass", ) + theme_minimal() + theme(legend.position = "none") ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-48-1.png" width="360" /> ] --- ## De puntenwolk met .UA-red[`geom_point()`] en .UA-red[`geom_smooth()`] .pull-left[ .footnotesize[ ```r ggplot(penguins, aes( x = body_mass_g, y = flipper_length_mm )) + geom_point( ) + geom_smooth( ) + labs( title = "Palmer penguins", subtitle = "Samenhang tussen flipper lengte en body mass", y = "Flipper lengte", x = "Body mass", ) + theme_minimal() + theme(legend.position = "none") ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-50-1.png" width="360" /> ] --- ## De puntenwolk met .UA-red[`geom_point()`] en .UA-red[`geom_smooth()`] .pull-left[ - zonder confidentie interval - lineair model .footnotesize[ ```r ggplot(penguins, aes( x = body_mass_g, y = flipper_length_mm )) + geom_point( ) + geom_smooth( method = "lm", se = FALSE ) + labs( title = "Palmer penguins", subtitle = "Samenhang tussen flipper lengte en body mass", y = "Flipper lengte", x = "Body mass", ) + theme_minimal() + theme(legend.position = "none") ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-52-1.png" width="360" /> ] --- ## De puntenwolk met .UA-red[`geom_point()`] en .UA-red[`geom_smooth()`] .pull-left[ - een facet per soort dankzij .UA-red[`facet_wrap()`] .footnotesize[ ```r ggplot(penguins, aes( x = body_mass_g, y = flipper_length_mm )) + geom_point( ) + geom_smooth( method = "lm", se = FALSE ) + facet_wrap(.~species) + labs( title = "Palmer penguins", subtitle = "Samenhang tussen flipper lengte en body mass", y = "Flipper lengte", x = "Body mass", ) + theme_minimal() + theme(legend.position = "none") ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-54-1.png" width="360" /> ] --- ## De puntenwolk met .UA-red[`geom_point()`] en .UA-red[`geom_smooth()`] .pull-left[ .footnotesize[ ```r ggplot(data = penguins, aes(x = flipper_length_mm, y = body_mass_g)) + geom_point(aes(color = species, shape = species), size = 3, alpha = 0.8) + geom_smooth( aes(color = species), se = F, method = "lm" ) + theme_minimal() + scale_color_manual( values = c("darkorange","purple","cyan4")) + labs(title = "Penguin size, Palmer Station LTER", subtitle = "Flipper lengte en body mass voor Adelie, Chinstrap en Gentoo Pinguïns", x = "Flipper lengte (mm)", y = "Body mass (g)", color = "Penguin soort", shape = "Penguin soort") + theme(legend.position = c(0.2, 0.7), legend.background = element_rect(fill = "white", color = NA), plot.title.position = "plot", plot.caption = element_text(hjust = 0, face= "italic"), plot.caption.position = "plot") ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-56-1.png" width="360" /> ] --- class: inverse-blue # <i class="fas fa-laptop-code" style="color: #FF0035;"></i> Oefeningen `[ggplot2]` : deel 3 .left-column[  ] .right-column[ -- Op Dropbox vind je een document .SW-greenD[ `Oefening_ggplot2.Rmd`] - Plaats dit document op je pc - Open vervolgens het bestand in `R Studio` - Het document bevat een set van opdrachten met telkens lege code blokken - Bedoeling is dat je de juiste code schrijft (en test door te laten lopen) om deze opdrachten uit te voeren - Zit je vast? No Worries! - Ik ben er - Je hebt elkaar - Er is een oplossingssleutel .SW-greenD[`Oefening_ggplot2_oplossing.Rmd`] ] --- class: inverse-green, center, middle name: appendix1 # Appendix 1 *Regenwolken laten groeien* <br> <br><br> [Terug naar slideshow...](#raincloud) --- ## Stap 1 .pull-left[ .footnotesize[ ```r library(ggdist) P1 <- ggplot(penguins, aes(x = species, y = flipper_length_mm)) + stat_halfeye( ) P1 ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-58-1.png" width="504" style="display: block; margin: auto;" /> ] --- ## Stap 2 .pull-left[ .footnotesize[ ```r P1 <- ggplot(penguins, aes(x = species, y = flipper_length_mm)) + stat_halfeye( adjust = .5, width = .6, .width = 0, justification = -.2, point_colour = NA ) P1 ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-60-1.png" width="504" style="display: block; margin: auto;" /> ] --- ## Stap 3 .pull-left[ .footnotesize[ ```r P2 <- P1 + geom_boxplot( width = .15, outlier.shape = NA ) P2 ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-62-1.png" width="504" style="display: block; margin: auto;" /> ] --- ## Stap 4 .pull-left[ .footnotesize[ ```r P3 <- P2 + geom_point( size = 1.3, alpha = .3, position = position_jitter( seed = 1, width = .1 )) P3 ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-64-1.png" width="504" style="display: block; margin: auto;" /> ] --- ## Stap 5 .pull-left[ .footnotesize[ ```r P4 <- P3 + labs( title = "Palmer penguins", subtitle = "Verdeling van flipper lengte per soort", x = "", y = "flipper lengte" ) P4 ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-66-1.png" width="504" style="display: block; margin: auto;" /> ] --- ## Stap 6 .pull-left[ .footnotesize[ ```r P5 <- P4 + coord_cartesian(xlim = c(1.2, NA), clip = "off") + coord_flip() + theme_minimal() + theme(plot.title.position = "plot") P5 ``` ] ] .pull-right[ <img src="Slides_Deel4_files/figure-html/unnamed-chunk-68-1.png" width="504" style="display: block; margin: auto;" /> ] --- class: inverse-green, center, middle ## AANSCHOUW DE REGENWOLKEN / [Terug naar slideshow...](#raincloud) <img src="Slides_Deel4_files/figure-html/unnamed-chunk-69-1.png" width="504" style="display: block; margin: auto;" />