07 Visualisierungen II

Einführung in die quantitativen Forschungsmethoden

Wiederholung

Übersicht

  • Geoms: Art der Visualisierung
    • geom_point()
    • geom_label()
    • geom_smooth()
  • aesthetics: Variable Eigenschaften, in geom oder ggplot definiert
    • x, y
    • color, shape, fill etc.
  • Facets: facet_wrap()
  • Themes
    • theme_minimal(), theme_classic(), theme_bw()
  • CheatSheet

Beispiel

library(tidyverse)
library(haven)
ess8 <- read_dta("../data/ESS8e02_2.dta")

# gruppieren
ess8 <- group_by(ess8,cntry)

# zusammenfassen
democracy <- summarise(ess8,
                       mean_stfgov=mean(stfgov,na.rm=T),
                       mean_stfdem=mean(stfdem,na.rm=T))
# Demokratie Variable
democracy$cee <- ifelse(democracy$cntry %in%
                          c("CZ","EE","HU","LT","PL","SI"),
                        "CEE","other")

Beispiel

  • ggplot() erzeugt Plot
  • data: Datensatz
ggplot(data=democracy)

Beispiel

  • geoms definieren die Art des Plots
  • aes definiert x- und y-Werte
ggplot(data=democracy)+
  geom_point(aes(x=mean_stfgov,
                 y=mean_stfdem))

Beispiel

  • aes definiert auch weitere Variablen
ggplot(data=democracy)+
  geom_point(aes(x=mean_stfgov,
                 y=mean_stfdem,
                 color=cee))

Heute neu

  • Attribute verändern Eigenschaften unabhängig von Variablen - außerhalb von aes
ggplot(data=democracy)+
  geom_point(aes(x=mean_stfgov,
                 y=mean_stfdem,
                 color=cee),
             shape=4)

→ zum Beispiel für Farben

Weitere Arten von Plots

Häufigkeitsverteilungen

  • als Histogramm mit geom_histogram()
    • zählt Kategorien aus (nur x-Wert)
    • bei sehr vielen Kategorien werden Kategorien zusammengefasst
    • geom_bar() funktioniert sehr ähnlich
ggplot(data=ess8,aes(x=agea))+
  geom_histogram()

→ nützlich v.a. für wenige Kategorien

Häufigkeitsverteilungen

  • als weichgezeichnete Verteilung mit geom_density()
    • Häufigkeitsverteilung, keine direkten Werte → sinnvoll für viele Kategorien
  • hier wird fill als ‘attribute’ verwendet (siehe cheat sheet), d.h. es ist nicht mit einer Variable verknüpft und steht deswegen nicht in aes, sondern im geom
ggplot(data=ess8,aes(x=agea))+
  geom_density(fill="turquoise",alpha=0.4)

→ geeigneter für viele Kategorien

Bar chart

  • Bar charts (Balkendiagramme) mit geom_col()
    • auch geom_bar(stat="identity")
    • geom_bar() zählt Häufigkeit ↔︎ geom_col() und geom_bar(stat="identity") funktionieren, wenn wir die Häufigkeit schon berechnet haben
ggplot(data=democracy,
       aes(x=mean_stfgov,
           y=cntry))+
    geom_col()

Bar chart

  • Ergänzung: Wir können die Variable sortieren, damit die Grafik übersichtlicher wird
# sortieren der Werte
democracy <- arrange(democracy,mean_stfgov)
# festschreiben der Ordnung durch
# Faktorisierung der Variable cntry
democracy$cntry <- factor(democracy$cntry,
                          democracy$cntry)

# Grafik
ggplot(data=democracy,
       aes(x=mean_stfgov,
           y=cntry))+
    geom_col()

Lollipop chart

  • Alternative: Lollipop chart mit geom_segment()
    • xend und yend → Linie dazwischen
# sortieren
democracy <- democracy %>%
  arrange(mean_stfgov) %>%
  mutate(cntry=factor(cntry,cntry))

# lollipop chart
ggplot(data=democracy,
       aes(x=mean_stfgov,xend=0,
           y=cntry, yend=cntry))+
  geom_segment()+
  geom_point()

→ Achtung: geom_segment() braucht auch xend und yend als Spezifikation, weil es eine Fläche zwischen diesen Punkten markiert!

Lollipop chart

  • Bsp.: Änderung der Farben über Variable
democracy$col <- ifelse(democracy$cntry=="DE",
                        "highlight","else")
ggplot(data=democracy,
       aes(x=mean_stfgov,xend=0,
           y=cntry, yend=cntry,
           # Definition Farbe
           color=col))+
  geom_segment()+
  geom_point()+
  # Legende unterdrücken
  theme_minimal() + theme(legend.position="none")+
  # zuweisen von Farben
  scale_color_manual(values=c("gray","#094782"))

Linien

  • vor allem für über-Zeit Vergleiche
    • Linie impliziert Kontinuität → keine Vergleiche über Gruppen hinweg
overtime <- haven::read_dta("../data/ESS-Data-Wizard-subset-2023-01-11.dta")

overtime <- group_by(overtime,cntry,essround)
overtime_stfdem <- summarize(overtime,mean_stfdem=mean(stfdem,na.rm=T))

ggplot(data=overtime_stfdem)+
  geom_line(aes(x=essround,y=mean_stfdem,color=cntry))+
  # Legende unterdrückt
  theme(legend.position="none")

Linien

  • facet_wrap() stellt Gruppen deutlicher hervor!
ggplot(data=overtime_stfdem)+
  geom_line(aes(x=essround,y=mean_stfdem,color=cntry))+
  facet_wrap(~cntry)+ theme(legend.position="none")

Karten

Es gibt sehr viele weitere Möglichkeiten: z.B. ESS Karte ist auch mit R erzeugt

Figure 1: Länder nach ESS-Runde

→ …aber etwas komplizierter → nur für Extra-motivierte

Inspirationen

Herangehensweise

  • Was will ich zeigen?
    • z.B. Verteilung, Beziehung, Unterschiede oder Gemeinsamkeiten…
  • Wie zeige ich das?
    • Scatterplot, Bar chart, Linien, ….
    • Inspirationen auf Cheatsheet & Links (→ nächste Folie)

Inspirationen

Übungen

Aufgabe

Bearbeiten Sie das Übungsfile

Erstellen Sie eine Visualisierung für Ihre Forschungsfrage

Nächste Woche: Stichproben und Wahrscheinlichkeit

Llaudet/Imai (2023) S. 177-191