4  Grafiken

Wir wollen in diesem Kapitel keine sehr ausführlichen Überblick über alle möglichen Grafiken geben. Eine kleine Einführung ist im Skript Wirtschaftsmathematik Grafiken erstellen und einige Beispiel sind im Merkmale und dem EDA zu finden.

4.1 Univariat

4.1.1 Metrische Merkmale

Merkmale Typ der Grafik geometrische Funktion
metrisch Histogramm geom_histogram()
metrisch Dichteplot geom_density()
metrisch Boxplot geom_boxplot()
metrisch Violinplot geom_violin()
metrisch Empirische Verteilungsfunktion stat_ecdf()

Beispiel: Metrische Daten

Die einfachste und beste Grafik für univariate Daten sind Histogramme. In unserem Beispiel können wir zum Beispiel das Alter oder die Summenwerte eines Konstrukts jeweils in einem Histogramm darstellen.

umfrage |> ggplot(aes(x = Alter)) + 
           geom_histogram(binwidth =1, 
                          fill = "steelblue2",
                          color = "grey50") +
           labs(y = "Anzahl") 

umfrage |> ggplot(aes(x = Summe_SE)) + 
           geom_histogram(binwidth =1, 
                          fill = "steelblue2",
                          color = "grey50") +
           labs(x = "Summe SE", y = "Anzahl")

4.1.2 Kategoriale Merkmale

Merkmale Typ der Grafik geometrische Funktion
kategorial Säulendiagramm, Balkendiagramm geom_bar()

Univariate, kategoriale Daten werden als Balken- oder Säulendiagramm dargestellt. In unserem Beispiel können wir zum Beispiel die Antworten eines Items bevor diese zu einem metrischen Merkmal konvertiert wurden

umfrage2 |> ggplot(aes(y = SE01_01)) + 
            geom_bar(fill = "steelblue2") +
            labs(x = "Anzahl") 

umfrage2 |> ggplot(aes(x = SE01_01)) + 
            geom_bar(fill = "steelblue2") +
            labs(y = "Anzahl") + 
            theme(axis.text.x = element_text(angle = 40,
                                             vjust = 0))

4.2 Bivariat

4.2.1 Metrisch-Metrisch

Möchte man zwei metrische Merkmale gleichzeitig darstellen, so bietet sich ein Streudiagramm an.

umfrage |> ggplot(aes(x = Summe_SE, y = Summe_TE)) + 
           geom_point() +
           labs(x = "Summe SE", y = "Summe TE")

Merkmale Typ der Grafik geometrische Funktion
metrisch / metrisch Streudiagramm geom_point()
metrisch / metrisch Streudiagramm mit Regressionsgerade geom_point() +
geom_smooth(method = "lm")
metrisch / metrisch Liniendiagramm geom_line()
metrisch / metrisch 2D-Dichteplot geom_density_2d()
metrisch / metrisch Hexbin-Plot geom_hex()

4.2.2 Metrisch / Kategorial

Merkmale Typ der Grafik geometrische Funktion
metrisch / kategorial Boxplot nach Gruppen geom_boxplot()
metrisch / kategorial Violinplot nach Gruppen geom_violin()
metrisch / kategorial Stripchart / Punktdiagramm nach Gruppen geom_jitter()
metrisch / kategorial Mittelwert mit Fehlerbalken stat_summary() +
geom_errorbar()
metrisch / kategorial facettierte Histogramme geom_histogram() +
facet_wrap()
metrisch / kategorial facettierte Dichteplots geom_density() +
facet_wrap()

4.2.3 Kategorial-Kategorial

Merkmale Typ der Grafik geometrische Funktion
kategorial / kategorial gruppiertes Balkendiagramm geom_bar(position = "dodge")
kategorial / kategorial gestapeltes Balkendiagramm geom_bar(position = "stack")
kategorial / kategorial prozentuales gestapeltes Balkendiagramm geom_bar(position = "fill")
kategorial / kategorial Heatmap der Häufigkeiten geom_tile()
kategorial / kategorial Mosaikplot geom_mosaic()

Mit dem Mosaikplot erkennt man sowohl die Verteilung der einzelnen Merkmale als auch die Verteilung des zweiten Merkmals (y-Achse) gegeben die Ausprägung des ersten Merkmals (sog. bedingten Wahrscheinlichkeiten).

WichtigBemerkung: (Stand: April 2026)

Derzeit ist das Paket ggmosaic nur direkt von github installierbar, da eine Version, die mit ggplot 4.0 verträglich ist noch nicht im CRAN eingecheckt ist.

install.packages("devtools")
devtools::install_github("haleyjeppson/ggmosaic")

Facettierte Histogramm

  • Um die Unabhängigkeit zweier kategorialer Merkmale zu prüfen, ist der Mosaikplot aus dem Paket ggmosaic die richtige Wahl.

4.3 Pivotieren

Das Konzept des Pivotierens gehört eigentlich in die Datenaufarbeitung, allerdings benötigen wir es insbesondere um Daten facettiert darstellen zu können: Wir wollen nun alle Items gleichzeitig in facettierten Histogrammen darstellen. Das Problem ist nun, dass jedes Item ein eigenes Merkmal ist. Die Idee ist, dass man alle Werte in ein Merkmal schreibt und den Namen des zugehörigen Merkmals in ein anderes Merkmal schreibt. Man macht also aus einer breiten eine lange Tabelle.

Beispiel:

umfrage
# A tibble: 110 × 18
    Fall Alter Summe_SE Summe_TE SE01_01 SE01_02_invers SE01_03 SE01_04_invers
   <dbl> <dbl>    <dbl>    <dbl>   <dbl>          <dbl>   <dbl>          <dbl>
 1     1    21       24       12       3              4       4              4
 2     2    29       17       16       2              0       2              4
 3     3    18       20       10       1              3       3              3
 4     4    23       25       11       4              4       4              4
 5     5    19       21        7       4              4       1              4
 6     6    21       25       11       4              4       3              4
 7     7    19       25       11       4              4       3              4
 8     8    20       23        8       3              3       3              4
 9     9    21       25        9       4              4       4              4
10    10    21       20        8       3              1       3              3
# ℹ 100 more rows
# ℹ 10 more variables: SE01_05 <dbl>, SE01_06 <dbl>, SE01_07 <dbl>,
#   TE01_01 <dbl>, TE01_02_invers <dbl>, TE01_03 <dbl>, TE01_04_invers <dbl>,
#   TE01_05 <dbl>, TE01_06_invers <dbl>, TE01_07 <dbl>
umfrage_lang <- umfrage |> pivot_longer(SE01_01:TE01_07, 
                                        values_to = "Werte",
                                        names_to = "Item")
umfrage_lang
# A tibble: 1,540 × 6
    Fall Alter Summe_SE Summe_TE Item           Werte
   <dbl> <dbl>    <dbl>    <dbl> <chr>          <dbl>
 1     1    21       24       12 SE01_01            3
 2     1    21       24       12 SE01_02_invers     4
 3     1    21       24       12 SE01_03            4
 4     1    21       24       12 SE01_04_invers     4
 5     1    21       24       12 SE01_05            4
 6     1    21       24       12 SE01_06            3
 7     1    21       24       12 SE01_07            2
 8     1    21       24       12 TE01_01            4
 9     1    21       24       12 TE01_02_invers     3
10     1    21       24       12 TE01_03            4
# ℹ 1,530 more rows

Nun sind alle

umfrage_lang |> ggplot(aes(x = Werte)) +
                geom_histogram(bins = 10) +
                facet_wrap(~Item, ncol = 4)