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 verschiedener Datentypen .bottom[
Lars Schöbitz
2023-09-21
] --- class: left background-image: url(img/review.jpg) background-position: right background-size: contain # Rückblick - Woche 2 **Daten erkunden** - Über mapping visueller Eigenschaften - `aes()` - Über Faceting - `facet_grid()` - 2 dimensional - `facet_wrap()` - 1 dimensional - Mit Funktionen - `str()` - `nrow()` - `ncol()` - `View()` .footnote[Photo by: [Annie Spratt](https://unsplash.com/photos/nVrqbvzOh08)] ??? --- background-image: url(img/goals-dart.jpg) background-position: right background-size: contain # Ziele für diese Woche .pull-left[ Am Ende dieser Woche könnt ihr: - die Farb- und Achsenskalierung eines Plots anpassen - den passenden Plot für eure Daten finden - einzelne Funktionen des R Package `{dplyr}` anwenden - beschreiben wie das Symbol `%>%` genutzt wird .footnote[Photo by: [Ameer Basheer](https://unsplash.com/photos/nVrqbvzOh08)] ] --- class: inverse, middle # .big[Hausaufgabe - Hallo OGD] --- class: inverse, middle # .big[Übung 3 - Beispiel] --- .panelset[ .panel[.panel-name[Plot] <img src="e1_d03-data-vis-num_files/figure-html/unnamed-chunk-5-1.png" width="100%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Code] ```r ggplot(data = corona_kultur_beschluss_gering, aes(x = Beschluss, fill = Sparte)) + * geom_histogram(binwidth = 10000) + facet_wrap(~Kategorie) + scale_fill_brewer(type = "qual", palette = 3) + * scale_x_continuous(breaks = seq(0, 100000, 10000), * labels = seq(0, 100, 10)) + labs(title = "Corona Hilfen im Kulturbereich im Kanton Zürich", subtitle = "Verteilung der Beträge kleiner 100'000 CHF nach Kategorie und Sparte", caption = "Daten: opendata.swiss", x = "Beschluss in 1000 CHF", y = "Anzahl") + * theme(legend.position = "bottom") ``` ] ] --- class: inverse, middle # .big[Übung 4 - Beispiel] --- .panelset[ .panel[.panel-name[Plot] <img src="e1_d03-data-vis-num_files/figure-html/unnamed-chunk-6-1.png" width="100%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Code] ```r ggplot(data = corona_kultur, mapping = aes(x = Status, fill = Sparte)) + geom_bar() + facet_wrap(~Kategorie, nrow = 1) + scale_fill_brewer(type = "qual", palette = 3) + * theme_minimal(base_size = 14) + * theme(legend.position = "bottom") ``` ] ] --- class: inverse, middle # .large[Praktikum 3 - {ggplot2}] --- .note[ 1. **Posit Cloud**: Öffne deinen Arbeitsbereich für den Kurs in der Posit Cloud 2. **Posit Cloud / Projects**: Öffne erneut das Praktikum 03 3. Folgt wieder auf dem Bildschirm ] --- ## Eine Skala ersetzen - Farbskalen (color) ```r ggplot(penguins, aes(x = bill_length_mm, y = bill_depth_mm, colour = species)) + geom_point() + * scale_color_viridis_d() ``` <img src="e1_d03-data-vis-num_files/figure-html/unnamed-chunk-7-1.png" width="80%" style="display: block; margin: auto;" /> --- ## Eine Skala ersetzen - Farbskalen (fill) ```r ggplot(penguins, aes(x = species, fill = island)) + geom_bar() + * scale_fill_viridis_d() ``` <img src="e1_d03-data-vis-num_files/figure-html/unnamed-chunk-8-1.png" width="80%" style="display: block; margin: auto;" /> --- ## Eine Skala ersetzen - Farbskalen ([colorbrewer2.org](https://colorbrewer2.org/)) ```r ggplot(penguins, aes(x = species, fill = island)) + geom_bar() + * scale_fill_brewer(type = "qual", palette = "Set2") ``` <img src="e1_d03-data-vis-num_files/figure-html/unnamed-chunk-9-1.png" width="80%" style="display: block; margin: auto;" /> --- ## Eine Skala ersetzen - Achsen (kontinuierliche Variable) .panelset[ .panel[.panel-name[Plot] <img src="e1_d03-data-vis-num_files/figure-html/unnamed-chunk-10-1.png" width="100%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Code] ```r ggplot(penguins, aes(x = bill_length_mm, y = bill_depth_mm, colour = species)) + geom_point() + scale_color_viridis_d() + * scale_x_continuous(breaks = seq(0, 70, 5), limits = c(0, 70)) + * scale_y_continuous(breaks = seq(0, 30, 2.5), limits = c(0, 30)) ``` ] ] --- class: inverse, middle # .large[Variablen Typen] --- # Variablen Typen .midi[ .pull-left[ ## Numerisch **Diskrete Variablen** - nicht negative - zählbare - ganze Zahlen - z.B. Anzahl Schüler, Würfelwurf **Stetige (kontinuierliche) Variablen** - unendliche Anzahl von Werten - zwischen zwei Werten - auch Datums/Uhrzeitwerte - z.B. Länge, Gewicht, Grösse ] .pull-right[ ## Nicht numerisch **Kategoriale Variablen** - endliche Anzahl von Werten - eindeutige Gruppen (z.B. EU Länder) - **ordinal**, wenn diese eine logische Reihenfolge/Rangordnung aufweisen (z.B. Wochentage, Schulnoten) ] ] ??? Diskrete Variablen sind numerische Variablen, die zwischen zwei beliebigen Werten eine zählbare Anzahl von nicht negativen Werten aufweisen. Eine diskrete Variable ist immer numerisch. Beispiele: Die Anzahl Schüler in der Primarschule oder das Ergebnis eines Wurfs eines Würfels. Stetige Daten sind numerische Variablen, die zwischen zwei beliebigen Werten eine unendliche Anzahl von Werten aufweisen. Stetige Variablen können aus numerischen oder Datums-/Uhrzeitwerten bestehen. Beispiel: die Länge eines Teils oder Datum und Uhrzeit eines Zahlungseingangs Kategoriale Variablen umfassen eine endliche Anzahl von Kategorien oder eindeutigen Gruppen. Kategoriale Daten müssen nicht zwangsläufig eine logische Reihenfolge aufweisen. Zu den kategorialen Prädiktoren zählen beispielsweise Geschlecht, Materialtyp und Zahlungsmethode --- # Variablen Typen - Penguins ```r penguins ``` ``` # A tibble: 344 × 8 species island bill_length_mm bill_depth_mm flipper_length_mm <fct> <fct> <dbl> <dbl> <int> 1 Adelie Torgers… 39.1 18.7 181 2 Adelie Torgers… 39.5 17.4 186 3 Adelie Torgers… 40.3 18 195 4 Adelie Torgers… NA NA NA 5 Adelie Torgers… 36.7 19.3 193 6 Adelie Torgers… 39.3 20.6 190 # ℹ 338 more rows # ℹ 3 more variables: body_mass_g <int>, sex <fct>, year <int> ``` --- # Variablen Typen - Penguins ```r str(penguins) ``` ``` tibble [344 × 8] (S3: tbl_df/tbl/data.frame) $ species : Factor w/ 3 levels "Adelie","Chinstrap",..: 1 1 1 1 1 1 1 1 1 1 ... $ island : Factor w/ 3 levels "Biscoe","Dream",..: 3 3 3 3 3 3 3 3 3 3 ... $ bill_length_mm : num [1:344] 39.1 39.5 40.3 NA 36.7 39.3 38.9 39.2 34.1 42 ... $ bill_depth_mm : num [1:344] 18.7 17.4 18 NA 19.3 20.6 17.8 19.6 18.1 20.2 ... $ flipper_length_mm: int [1:344] 181 186 195 NA 193 190 181 195 193 190 ... $ body_mass_g : int [1:344] 3750 3800 3250 NA 3450 3650 3625 4675 3475 4250 ... $ sex : Factor w/ 2 levels "female","male": 2 1 1 NA 1 2 1 2 NA NA ... $ year : int [1:344] 2007 2007 2007 2007 2007 2007 2007 2007 2007 2007 ... ``` --- # Variablen Typen - Penguins
Variable
Variablen Typ 1
Variablen Typ 2
species
kategorisch
nicht ordinal
island
kategorisch
nicht ordinal
bill_length_mm
numerisch
kontinuierlich
bill_depth_mm
numerisch
kontinuierlich
flipper_length_mm
numerisch
kontinuierlich
body_mass_g
numerisch
kontinuierlich
sex
kategorisch
nicht ordinal
year
numerisch
diskret
??? - Ist das Jahr nun diskret oder kontinuierlich? - In diesem Fall haben wir keine Datumsangabe oder Zeitpunktsangabe, sondern das Jahr in welchem die Daten gesammelt wurde, dies macht die Variable selbst zu einer diskreten Variable. - Warum spielt das eine Rolle? --- background-image: url(img/data-to-viz.png) background-size: contain .footnote[Screenshot of: https://www.data-to-viz.com/] --- # Zwei Bücher für eure weitere Reise - `{ggplot2}`: Elegant Graphics for Data Analysis https://ggplot2-book.org/index.html - Fundamentals of Data Visualization: https://clauswilke.com/dataviz/ --- # 🌻 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_d03-data-vis-num/e1_d03-data-vis-num.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.