diff --git a/Plot2.Rmd b/Plot2.Rmd new file mode 100644 index 0000000..7dc1321 --- /dev/null +++ b/Plot2.Rmd @@ -0,0 +1,130 @@ +--- +title: "Plot 2" +output: html_document +--- + + +# Visualisierung von Datensätzen + +In diesem Abschnitt sollen alle Graphiken mit _ggplot_ und alle Tabellen mit `kable` erstellt werden. + +## Säuglingssterblichkeit und Wirtschaftsleistung + +Nutzen Sie den Datensatz `carData::UN`. In der Hilfe finden Sie Hinweise, was dort gezeigt ist. Beachten Sie, dass für einige Länder Werte fehlen (`NA`); diese Länder sollen nicht berücksichtigt werden. + +### Wirtschaftsleistung vs. Säuglingssterblichkeit + +Erzeugen Sie diese Graphik, indem Sie den nachfolgenden Chunk vervollständigen. Die gezeigten Länder sind Germany, United States, China, India, Afghanistan, Sierra Leone, Japan, Cuba. + +Tipp: Sie dürfen (und sollen) weitere Libraries nutzen, wenn diese hilfreich sind. + +```{r} +# Ihre Lösung: +library(dplyr) +library(knitr) + +un = carData::UN +kable(un[1:20,]) +``` + + +```{r} +library(ggplot2) +library(ggrepel) + +# Nur Länder ohne NA Werte +un = un[complete.cases(un[, c("ppgdp", "infantMortality")]), ] + +markierte_laender = c( + "Germany", "United States", "China", "India", + "Afghanistan", "Sierra Leone", "Japan", "Cuba" +) + +labeldaten = un[rownames(un) %in% markierte_laender, ] + +ggplot(un, aes(x = ppgdp, y = infantMortality)) + + geom_point() + + geom_text_repel( + data = labeldaten, + color="blue", + aes(label = rownames(labeldaten))) + + scale_x_log10() + + scale_y_log10() + + labs( + title= "BIP in Abhängigkeit der Säuglingssterblichkeit", + x = "BIP pro Kopf (US-Dollar)", + y = "Säuglingssterblichkeit (pro 1000 Lebendgeburten" + ) +``` + +### Säuglingssterblichkeit im Verhältnis zur Wirtschaftsleistung + +Geben Sie diejenigen 10 Länder als Tabelle im Notebook aus, die das größte Verhältnis $r$ von Säuglingssterblichkeit zu Wirtschaftsleistung haben. Dabei ist $r$ die Säuglingssterblichkeit (pro 1000 Lebendgeburten) je 1000 US-Dollar BIP pro Kopf. Die Liste soll nach $r$ absteigend sortiert sein und den Ländernamen und $r$ enthalten. + +Vervollständigen Sie diesen Chunk: + +```{r} +# Ihre Lösung: +library(tibble) +library(dplyr) + +relation = function(ppgdp, infantMortality) ppgdp / infantMortality +un_r = un |> mutate(relation = round(relation(ppgdp, infantMortality))) + +werte = tibble( + Land = rownames(un_r), + relation = un_r$relation) |> filter(!is.na(relation)) # Filter eigentlich nicht nötig + +top10 = werte |> + slice_max(order_by = relation, n=10, with_ties = FALSE) |> + arrange(desc(relation)) + +kable(top10) +``` + +Geben Sie nun -- wie eben -- diejenigen 10 Länder als Tabelle aus, die das **kleinste** Verhältnis $r$ haben. Die Liste soll nach $r$ absteigend sortiert sein. + +Vervollständigen Sie diesen Chunk: + +```{r} +# Ihre Lösung: +bottom10 = werte |> + slice_min(order_by = relation, n=10, with_ties = FALSE) |> + arrange(desc(relation)) + +kable(bottom10) +``` + +## Kieferwachstum bei Kindern + +Nutzen Sie den Datensatz `nlme::Orthodont`. In der Hilfe finden Sie Hinweise, was dort gezeigt ist. + +### Überblick über Verlauf bei allen Kindern + +Plotten Sie im folgenden Chunk den Verlauf des Abstands zwischen Hypophyse und Fossa pterygopalatina (_y_-Achse) in Abhängigkeit vom Alter (_x_-Achse). Dies soll in einem Diagramm mit Unterdiagrammen erfolgen: ein Unterdiagramm zeigt den Verlauf für je ein Kind (Subject) und dessen Geschlecht (Male oder Female). + +```{r} +# Ihre Lösung: +orthodont = nlme::Orthodont + +kable(orthodont[1:10, ]) +``` +```{r} +ggplot(orthodont) + + geom_line(aes(x=age, y=distance, group=Subject)) + + geom_point(aes(x=age, y=distance, group=Subject)) + + facet_wrap(~ Subject + Sex) + + labs(title="Überblick des Abstandsverlaufs pro Kind", x="Alter", y="Abstand Hypophyse und Fossa Pterygopalatina") +``` + +### Boxplots des Abstands je Alter + +Erzeugen Sie ein Diagramm, das in zwei Unterdiagrammen für die Jungen und die Mädchen Boxplots erstellt. Die Boxplots geben die Verteilung des Abstands je Alter an. In Anlehnung an das obige Diagramm sollen die Boxplots vertikal ausgerichtet sein. + +```{r} +# Ihre Lösung: +ggplot(orthodont) + + geom_boxplot(aes(x=age, y=distance, group=age, fill=age)) + + facet_wrap(~ Sex) + + labs(title="Boxplot des Abstands je Alter", x="Alter", y="Abstand Hypophyse und Fossa Pterygopalatina") +``` diff --git a/Plot2.html b/Plot2.html new file mode 100644 index 0000000..44f222e --- /dev/null +++ b/Plot2.html @@ -0,0 +1,933 @@ + + + + +
+ + + + + + + + +In diesem Abschnitt sollen alle Graphiken mit ggplot und
+alle Tabellen mit kable erstellt werden.
Nutzen Sie den Datensatz carData::UN. In der Hilfe
+finden Sie Hinweise, was dort gezeigt ist. Beachten Sie, dass für einige
+Länder Werte fehlen (NA); diese Länder sollen nicht
+berücksichtigt werden.
Erzeugen Sie diese Graphik, indem Sie den nachfolgenden Chunk +vervollständigen. Die gezeigten Länder sind Germany, United States, +China, India, Afghanistan, Sierra Leone, Japan, Cuba.
+Tipp: Sie dürfen (und sollen) weitere Libraries nutzen, wenn diese +hilfreich sind.
+# Ihre Lösung:
+library(dplyr)
+##
+## Attache Paket: 'dplyr'
+## Die folgenden Objekte sind maskiert von 'package:stats':
+##
+## filter, lag
+## Die folgenden Objekte sind maskiert von 'package:base':
+##
+## intersect, setdiff, setequal, union
+library(knitr)
+
+un = carData::UN
+kable(un[1:20,])
+| + | region | +group | +fertility | +ppgdp | +lifeExpF | +pctUrban | +infantMortality | +
|---|---|---|---|---|---|---|---|
| Afghanistan | +Asia | +other | +5.968 | +499.0 | +49.49 | +23 | +124.53500 | +
| Albania | +Europe | +other | +1.525 | +3677.2 | +80.40 | +53 | +16.56100 | +
| Algeria | +Africa | +africa | +2.142 | +4473.0 | +75.00 | +67 | +21.45800 | +
| American Samoa | +NA | +NA | +NA | +NA | +NA | +NA | +11.29389 | +
| Angola | +Africa | +africa | +5.135 | +4321.9 | +53.17 | +59 | +96.19100 | +
| Anguilla | +Caribbean | +other | +2.000 | +13750.1 | +81.10 | +100 | +NA | +
| Argentina | +Latin Amer | +other | +2.172 | +9162.1 | +79.89 | +93 | +12.33700 | +
| Armenia | +Asia | +other | +1.735 | +3030.7 | +77.33 | +64 | +24.27200 | +
| Aruba | +Caribbean | +other | +1.671 | +22851.5 | +77.75 | +47 | +14.68700 | +
| Australia | +Oceania | +oecd | +1.949 | +57118.9 | +84.27 | +89 | +4.45500 | +
| Austria | +Europe | +oecd | +1.346 | +45158.8 | +83.55 | +68 | +3.71300 | +
| Azerbaijan | +Asia | +other | +2.148 | +5637.6 | +73.66 | +52 | +37.56600 | +
| Bahamas | +Caribbean | +other | +1.877 | +22461.6 | +78.85 | +84 | +14.13500 | +
| Bahrain | +Asia | +other | +2.430 | +18184.1 | +76.06 | +89 | +6.66300 | +
| Bangladesh | +Asia | +other | +2.157 | +670.4 | +70.23 | +29 | +41.78600 | +
| Barbados | +Caribbean | +other | +1.575 | +14497.3 | +80.26 | +45 | +12.28400 | +
| Belarus | +Europe | +other | +1.479 | +5702.0 | +76.37 | +75 | +6.49400 | +
| Belgium | +Europe | +oecd | +1.835 | +43814.8 | +82.81 | +97 | +3.73900 | +
| Belize | +Latin Amer | +other | +2.679 | +4495.8 | +77.81 | +53 | +16.20000 | +
| Benin | +Africa | +africa | +5.078 | +741.1 | +58.66 | +42 | +76.67400 | +
library(ggplot2)
+library(ggrepel)
+
+# Nur Länder ohne NA Werte
+un = un[complete.cases(un[, c("ppgdp", "infantMortality")]), ]
+
+markierte_laender = c(
+ "Germany", "United States", "China", "India",
+ "Afghanistan", "Sierra Leone", "Japan", "Cuba"
+)
+
+labeldaten = un[rownames(un) %in% markierte_laender, ]
+
+ggplot(un, aes(x = ppgdp, y = infantMortality)) +
+ geom_point() +
+ geom_text_repel(
+ data = labeldaten,
+ color="blue",
+ aes(label = rownames(labeldaten))) +
+ scale_x_log10() +
+ scale_y_log10() +
+ labs(
+ title= "BIP in Abhängigkeit der Säuglingssterblichkeit",
+ x = "BIP pro Kopf (US-Dollar)",
+ y = "Säuglingssterblichkeit (pro 1000 Lebendgeburten"
+ )
+Geben Sie diejenigen 10 Länder als Tabelle im Notebook aus, die das +größte Verhältnis \(r\) von +Säuglingssterblichkeit zu Wirtschaftsleistung haben. Dabei ist \(r\) die Säuglingssterblichkeit (pro 1000 +Lebendgeburten) je 1000 US-Dollar BIP pro Kopf. Die Liste soll nach +\(r\) absteigend sortiert sein und den +Ländernamen und \(r\) enthalten.
+Vervollständigen Sie diesen Chunk:
+# Ihre Lösung:
+library(tibble)
+library(dplyr)
+
+relation = function(ppgdp, infantMortality) ppgdp / infantMortality
+un_r = un |> mutate(relation = round(relation(ppgdp, infantMortality)))
+
+werte = tibble(
+ Land = rownames(un_r),
+ relation = un_r$relation) |> filter(!is.na(relation)) # Filter eigentlich nicht nötig
+
+top10 = werte |>
+ slice_max(order_by = relation, n=10, with_ties = FALSE) |>
+ arrange(desc(relation))
+
+kable(top10)
+| Land | +relation | +
|---|---|
| Luxembourg | +45913 | +
| Norway | +28772 | +
| Singapore | +22851 | +
| Switzerland | +19607 | +
| Sweden | +19224 | +
| Iceland | +19095 | +
| Japan | +16925 | +
| Finland | +15991 | +
| Hong Kong | +15708 | +
| Denmark | +14264 | +
Geben Sie nun – wie eben – diejenigen 10 Länder als Tabelle aus, die +das kleinste Verhältnis \(r\) haben. Die Liste soll nach \(r\) absteigend sortiert sein.
+Vervollständigen Sie diesen Chunk:
+# Ihre Lösung:
+bottom10 = werte |>
+ slice_min(order_by = relation, n=10, with_ties = FALSE) |>
+ arrange(desc(relation))
+
+kable(bottom10)
+| Land | +relation | +
|---|---|
| Central African Republic | +5 | +
| Ethiopia | +5 | +
| Afghanistan | +4 | +
| Malawi | +4 | +
| Niger | +4 | +
| Liberia | +3 | +
| Sierra Leone | +3 | +
| Burundi | +2 | +
| Democratic Republic of the Congo | +2 | +
| Somalia | +1 | +
Nutzen Sie den Datensatz nlme::Orthodont. In der Hilfe
+finden Sie Hinweise, was dort gezeigt ist.
Plotten Sie im folgenden Chunk den Verlauf des Abstands zwischen +Hypophyse und Fossa pterygopalatina (y-Achse) in Abhängigkeit +vom Alter (x-Achse). Dies soll in einem Diagramm mit +Unterdiagrammen erfolgen: ein Unterdiagramm zeigt den Verlauf für je ein +Kind (Subject) und dessen Geschlecht (Male oder Female).
+# Ihre Lösung:
+orthodont = nlme::Orthodont
+
+kable(orthodont[1:10, ])
+| distance | +age | +Subject | +Sex | +
|---|---|---|---|
| 26.0 | +8 | +M01 | +Male | +
| 25.0 | +10 | +M01 | +Male | +
| 29.0 | +12 | +M01 | +Male | +
| 31.0 | +14 | +M01 | +Male | +
| 21.5 | +8 | +M02 | +Male | +
| 22.5 | +10 | +M02 | +Male | +
| 23.0 | +12 | +M02 | +Male | +
| 26.5 | +14 | +M02 | +Male | +
| 23.0 | +8 | +M03 | +Male | +
| 22.5 | +10 | +M03 | +Male | +
ggplot(orthodont) +
+ geom_line(aes(x=age, y=distance, group=Subject)) +
+ geom_point(aes(x=age, y=distance, group=Subject)) +
+ facet_wrap(~ Subject + Sex) +
+ labs(title="Überblick des Abstandsverlaufs pro Kind", x="Alter", y="Abstand Hypophyse und Fossa Pterygopalatina")
+Erzeugen Sie ein Diagramm, das in zwei Unterdiagrammen für die Jungen +und die Mädchen Boxplots erstellt. Die Boxplots geben die Verteilung des +Abstands je Alter an. In Anlehnung an das obige Diagramm sollen die +Boxplots vertikal ausgerichtet sein.
+# Ihre Lösung:
+ggplot(orthodont) +
+ geom_boxplot(aes(x=age, y=distance, group=age, fill=age)) +
+ facet_wrap(~ Sex) +
+ labs(title="Boxplot des Abstands je Alter", x="Alter", y="Abstand Hypophyse und Fossa Pterygopalatina")
+