class: title-slide <script async defer data-domain="rstatszh.github.io/website" src="https://plausible.io/js/plausible.js"></script> # rstatsZH - Data Science mit R ## Datenvisualisierung mit ggplot2 .bottom[
Lars Schöbitz
2023-09-14
] --- class: left background-image: url(img/review.jpg) background-position: right background-size: contain # Rückblick - Woche 1 **Viele neue Konzepte** - Git - GitHub - Posit Cloud - R - R Markdown - R Package `{ggplot2}` - Pinguine 🐧 - Code-chunks - Argument, Objekt, Funktion, etc. etc. .footnote[Photo by: [Annie Spratt](https://unsplash.com/photos/nVrqbvzOh08)] ??? Ihr habt letzte Woche unheimlich viel kennegelernt. Eine Menge neue Konzepte, welche einige von euch alle zum ersten gesehen haben. - Alles vorlesen --- class: left background-image: url(img/wild-flowers.jpg) background-position: right background-size: contain # Lob! - Woche 1 **Viele neue Konzepte** - Git - GitHub - Posit Cloud - R - R Markdown - R Package `{ggplot2}` - Pinguine 🐧 - Code-chunks - Argument, Objekt, Funktion, etc. etc. .footnote[Photo by: [Annie Spratt](https://unsplash.com/photos/nVrqbvzOh08)] ??? Ein grosses Lob dafür was ihr letzte Woche erreicht habt. Vieles von den Dingen wird sich weiterhin noch sehr fremd anfühlen, aber lasst euch nich beunruhigen. Das ist völlig normal. Am Ende des Kurses wird es sich hoffentlich ganz natürlich anfühlen eine Datei aus GitHub zu holen und damit zu arbeiten. --- background-image: url(img/r_rollercoaster.png) background-size: contain .footnote[Artwork by [@allison_horst](https://twitter.com/allison_horst)] --- background-image: url(img/goals-dart.jpg) background-position: right background-size: contain # Ziele für heute .pull-left[ Am Ende dieser Woche könnt ihr: - den Unterschied zwischen markdown und R Markdown beschreiben - selbständig einen Plot mit dem R Package `{ggplot2}` erstellen - innerhalb von RStudio selbstständig eine neue R Markdown Datei erstellen - das Aussehen eines HTML Dokuments anpassen .footnote[Photo by: [Ameer Basheer](https://unsplash.com/photos/nVrqbvzOh08)] ] ??? Und gerade weil letzte Woche sehr viel war, möchte ich mir diese Woche nochmals Zeit nehmen für die Grundkonzepte mit denen wir arbeiten. Letzte Woche war vor Allem wichtig, dass ihr die Werkzeuge einmal kennenlernt und ausprobiert. Diese Woche wollen wir beginnen sie besser zu verstehen und beschreiben zu können. Deshalb sind dies die Ziele für heute. --- # Ein paar Tipps **Lesezeichen** - Posit Cloud: https://posit.cloud/spaces/333892/content/all?sort=name_asc - Kurs Website: https://rstatszh.github.io/website/ - GitHub Organisation: https://github.com/rstatszh-k007 **GitHub Zugangsdaten** - GitHub Nutzername - GitHub Passwort - GitHub Personal Access Token (PAT) ??? Ich schlage euch vor minimal drei Lesezeichen zu setzen auf welche ihr einfach zu greifen könnt. Diese drei Webseiten werden wir mit Abstand am meisten nutzen. Auch ist es nützlich den GitHub Nutzernamen und das Passwort griffbereit zu haben oder in einem Passwort Manager zu speichern. Ihr werdet in eurer Hausaufgabe gemerkt haben, dass diese sehr häufig genutzt werden. --- class: middle, inverse # .big[Erste Schritte (replay)] --- background-image: url(img/screenshot/screenshot.004.png) background-size: contain --- background-image: url(img/screenshot/screenshot.005.png) background-size: contain --- background-image: url(img/screenshot/screenshot.006.png) background-size: contain --- background-image: url(img/screenshot/screenshot.007.png) background-size: contain --- background-image: url(img/screenshot/screenshot.008.png) background-size: contain --- background-image: url(img/screenshot/screenshot.014.png) background-size: contain --- class: middle, inverse # .big[Praktikum 2 - R Markdown] --- .note[ # Praktikum 2 - R Markdown 1. **E-Mail**: Öffne deine Email und klicke auf den Link zu deinem persönlichen GitHub repo für **prak-02** 2. **GitHub**: Klicke auf den grünen Button "Code" und kopiere den Link für das Repo in deine Zwischenablage 3. **Posit Cloud**: Öffne deinen Arbeitsbereich für den Kurs in der Posit Cloud 4. **Posit Cloud / Projects**: Klicke auf "New Project from GitHub Repository" 5. **RStudio**: Finde den Datei Manager und Git 6. **Zoom Chat**: Schreibt wenn ihr soweit seid ] --- class: left background-image: url(img/coffee-break.jpg) background-position: right background-size: contain # Pause
−
+
10
:
00
.footnote[Photo by: [Blake Wisz](https://unsplash.com/@blakewisz)] --- class: middle, inverse # .big[ggplot2 ❤️ 🐧] --- ## ggplot2 `\(\in\)` tidyverse .pull-left[ <img src="img/ggplot2-part-of-tidyverse.png" width="30%" style="display: block; margin: auto;" /> ] .pull-right[ - **ggplot2** ist das R Package für Datenvisualisierung im tidyverse - Struktur des Codes kann folgerndermassen zusammengefasst werden: ] ```r ggplot(data = [dataset], mapping = aes(x = [x-variable], y = [y-variable])) + geom_xxx() + other options ``` --- ## Data: Palmer Penguins Ein Datensatz über Pinguine Spezies auf Inseln im Palmer Archipelago mit Variablen für Grösse (Flossenlänge, Gewicht, Schnabelmasse), und Geschlecht. .pull-left-narrow[ <img src="img/penguins.png" width="80%" style="display: block; margin: auto;" /> ] .pull-right-wide[ ``` Rows: 344 Columns: 8 $ species <fct> Adelie, Adelie, Adelie, Adelie, Adeli… $ island <fct> Torgersen, Torgersen, Torgersen, Torg… $ bill_length_mm <dbl> 39.1, 39.5, 40.3, NA, 36.7, 39.3, 38.… $ bill_depth_mm <dbl> 18.7, 17.4, 18.0, NA, 19.3, 20.6, 17.… $ flipper_length_mm <int> 181, 186, 195, NA, 193, 190, 181, 195… $ body_mass_g <int> 3750, 3800, 3250, NA, 3450, 3650, 362… $ sex <fct> male, female, female, NA, female, mal… $ year <int> 2007, 2007, 2007, 2007, 2007, 2007, 2… ``` ] --- .panelset[ .panel[.panel-name[Plot] <img src="e1_d02-data-vis_files/figure-html/unnamed-chunk-9-1.png" width="90%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Code] ```r ggplot(data = penguins, mapping = aes(x = bill_depth_mm, y = bill_length_mm, colour = species)) + geom_point() + labs(title = "Bill depth and length", subtitle = "Dimensions for Adelie, Chinstrap, and Gentoo Penguins", x = "Bill depth (mm)", y = "Bill length (mm)", colour = "Species") ``` ] ] ??? Die Funktion `ggplot()` erzeugt hier ein Koordinatensystem, welchem Ebenen hinzugefügt werden. Das erste Argument von ggplot ist der Datenatz, welcher im Diagram verwendet werden soll. ggplot(data = penguins) erzeugt ein leeres Diagram. Um ein komplettes Diagramm zu erzeugen müssen eine oder mehrere Ebenen hinzugefügt werden, sogenannte geoms, oder geometrische Funktionen. Jede dieser geometrischen Funktionen übernimmt ein Argument `mapping`. Dies definiert wie die Variablen auf visuelle Eigenschaften (aesthetics) abgebildet werden. Neu hier für euch ist die Funktion `labs()`. Sie steht für Labels und hier können jegliche Labels angepasst werden. --- class: inverse, middle # .large[Praktikum 3 - {ggplot2}] --- .note[ 1. **E-Mail**: Öffne deine Email und klicke auf den Link zu deinem persönlichen GitHub repo für **prak-03** 2. **GitHub**: Klicke auf den grünen Button "Code" und kopiere den Link für das Repo in deine Zwischenablage 3. **Posit Cloud**: Öffne deinen Arbeitsbereich für den Kurs in der Posit Cloud 4. **Posit Cloud / Projects**: Klicke auf "New Project from GitHub Repository" 5. **RStudio**: Finde den Datei Manager und Git 6. **Zoom Chat**: Schreibt wenn ihr soweit seid ] --- class: left background-image: url(img/coffee-break.jpg) background-position: right background-size: contain # Pause
−
+
05
:
00
.footnote[Photo by: [Blake Wisz](https://unsplash.com/@blakewisz)] --- class: middle, inverse # .big[Mapping und Faceting] --- .pull-left[ .midi[**Mapping:** Grösse, Alpha, Farbe, etc. der Punkte werden basierend auf den Werten der Variable in den Daten bestimmt.] ```r ggplot(data = penguins, mapping = aes(x = bill_depth_mm, y = bill_length_mm, * size = body_mass_g, * color = island)) + geom_point() ``` <img src="e1_d02-data-vis_files/figure-html/unnamed-chunk-11-1.png" width="100%" style="display: block; margin: auto;" /> ] .pull-right[ .midi[**Setting:** Grösse, Alpha, Farbe, etc. der Punkte werden **nicht** basierend auf den Werten der Variable in den Daten bestimmt] ```r ggplot(data = penguins, mapping = aes(x = bill_depth_mm, y = bill_length_mm)) + * geom_point(size = 3, color = "blue") ``` <img src="e1_d02-data-vis_files/figure-html/unnamed-chunk-12-1.png" width="100%" style="display: block; margin: auto;" /> ] --- ## Faceting - Zusammenfassung - `facet_grid()`: - 2d grid - `rows ~ cols` - nutze `.` um nicht zu splitten - `facet_wrap()`: 1d wird entsprechend der angegebenen Anzahl von Zeilen und Spalten oder der verfügbaren Plotfläche umbrochen --- class: inverse, middle # .large[Praktikum 4 - {ggplot2}] --- .note[ Arbeitet in 2er Teams. Eine Person teilt den Bildschirm. Die andere schreibt mit. 1. **E-Mail**: Öffne deine Email und klicke auf den Link zu deinem persönlichen GitHub repo für **prak-04** 2. **GitHub**: Klicke auf den grünen Button "Code" und kopiere den Link für das Repo in deine Zwischenablage 3. **Posit Cloud**: Öffne deinen Arbeitsbereich für den Kurs in der Posit Cloud 4. **Posit Cloud / Projects**: Klicke auf "New Project from GitHub Repository" ] --- # Praktikum 4 - Lösung .panelset[ .panel[.panel-name[Plot] <img src="e1_d02-data-vis_files/figure-html/unnamed-chunk-13-1.png" width="80%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Code] ```r ggplot(data = penguins, mapping = aes(x = island, fill = species)) + # Achtung: Argument 'fill' und nicht 'color' geom_bar() + facet_grid(sex ~ species) + scale_fill_brewer(type = "qual", palette = "Set2") + # Passt die Farbe en theme(legend.position = "none") # Entfernt die Legende ``` ] ] --- class: middle, inverse # .big[Feedback] --- class: left background-image: url(img/tor.jpg) background-position: right background-size: contain # Ziele erreicht? Bitte ausfüllen: [https://forms.gle/YTy2R4hevrZXmgMN6](https://forms.gle/YTy2R4hevrZXmgMN6) .pull-left[ .footnote[Photo by: [Virgil Cayasa](https://unsplash.com/@virgilcayasa)] ] --- class: middle, inverse # .big[Hausaufgabe] --- # 🌻 Danke Für die Aufmerksamkeit! Für die R packages [{xaringan}](https://github.com/yihui/xaringan) und [{xaringanthemer}](https://github.com/gadenbuie/xaringanthemer) mit welchen die Folien geschrieben wurden. Eine PDF Version der Folien kann hier heruntergeladen werden: https://github.com/rstatsZH/website/raw/master/slides/e1_d02-data-vis/e1_d02-data-vis.pdf
Für [Data Science in a Box](https://datasciencebox.org/) und [Remaster the Tidyverse](https://github.com/rstudio-education/remaster-the-tidyverse), von welchen ich Materialien für diesen Kurs nutze und welche genau wie diese Folien mit [Creative Commons Attribution Share Alike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/) lizensiert sind.