Urban Research HS2026
2026-09-30
Artwork by Allison Horst, CC-BY license
Wickham, Çetinkaya-Rundel, and Grolemund (2023), https://r4ds.hadley.nz/whole-game.html#fig-ds-whole-game
Besucht https://www.housing-stat.ch/de/data/supply/public.html
Unter “Daten herunterladen” gebt “Zürich” ein und wählt “Kanton Zürich ZH” aus.
Lädt “Alle Daten (ZIP)” herunter.
Congrats, alle Gebäude des Kantons Zürich (über die Zeit!) sind nun auf eurem Computer als Datensatz.
Erstellt an dem Ort, wo ihr vorher euer Projekt erstellt habt, einen Ordner data.
Erstellt darin einen weiteren Ordner gwr.
Entpackt die Datei, die ihr soeben vom GWR heruntergeladen habt, in diesem Ordner.
Erstellt ein Script lab-datenvisualisierung.R
Artwork by Allison Horst, CC-BY license
Wir laden nun einen der Datensätze aus dem GWR in R.
read_tsv() (von readr) und geben den Pfad zu unserer File einclean_names() (von janitor) und “putzen” die geladene File etwasArtwork by Allison Horst, CC-BY license
# A tibble: 400,210 × 47
egid gdekt ggdenr ggdename egrid lgbkr lparz lparzsx ltyp gebnr gbez
<dbl> <chr> <dbl> <chr> <chr> <dbl> <chr> <lgl> <lgl> <chr> <chr>
1 1 ZH 2 Affoltern am … CH41… 0 4498 NA NA 22 <NA>
2 2 ZH 2 Affoltern am … <NA> 0 3812 NA NA 708 <NA>
3 3 ZH 2 Affoltern am … CH64… 0 3805 NA NA 727 <NA>
4 4 ZH 2 Affoltern am … CH79… 0 3811 NA NA 715 <NA>
5 5 ZH 2 Affoltern am … CH63… 0 3804 NA NA 732 <NA>
6 6 ZH 2 Affoltern am … CH78… 0 3810 NA NA 720 <NA>
7 7 ZH 2 Affoltern am … CH62… 0 3803 NA NA 740 <NA>
8 8 ZH 2 Affoltern am … CH77… 0 3809 NA NA 722 <NA>
9 9 ZH 2 Affoltern am … CH61… 0 3802 NA NA 742 <NA>
10 10 ZH 2 Affoltern am … CH66… 0 3808 NA NA 723 <NA>
# ℹ 400,200 more rows
# ℹ 36 more variables: gkode <dbl>, gkodn <dbl>, gksce <dbl>, gstat <dbl>,
# gkat <dbl>, gklas <dbl>, gbauj <dbl>, gbaum <dbl>, gbaup <dbl>,
# gabbj <dbl>, garea <dbl>, gvol <dbl>, gvolnorm <dbl>, gvolsce <dbl>,
# gastw <dbl>, ganzwhg <dbl>, gazzi <dbl>, gschutzr <dbl>, gebf <dbl>,
# gwaerzh1 <dbl>, genh1 <dbl>, gwaersceh1 <dbl>, gwaerdath1 <date>,
# gwaerzh2 <dbl>, genh2 <dbl>, gwaersceh2 <dbl>, gwaerdath2 <date>, …
Tidy data: Jede Reihe stellt eine Observation und jede Spalte stellt eine Variable dar
Illustrations from the Openscapes blog Tidy Data for reproducibility, efficiency, and collaboration by Julia Lowndes and Allison Horst
# A tibble: 400,210 × 4
egid garea gvol gbauj
<dbl> <dbl> <dbl> <dbl>
1 1 198 NA 1984
2 2 NA NA 1977
3 3 16 921 1978
4 4 125 NA 1978
5 5 94 NA 1978
6 6 158 NA 1978
7 7 10 NA 1978
8 8 155 NA 1978
9 9 83 NA 1977
10 10 160 NA 1978
# ℹ 400,200 more rows
Funktioniert in RStudio:
Wir haben Daten hier zu 400210 bewilligungspflichtigen existierenden und nicht mehr existierenden / noch nicht existierenden Gebäuden in Zürich.
Öffnet das Metadaten-PDF, welches bei euch unter data/gwr/gebaeude-batiment-edificio_specifications.pdf drin ist. Dieses PDF listet alle Variablen im Datensatz.
Fragen an den Datensatz? Diskutiert 4 Minuten mit eurem Nachbarn.
Zusammenhang zwischen Gebäudefläche und Gebäudevolumen in drei Gemeinden zwischen 2020 und 2026, mit allgemeinem Trend und separiert nach Gemeinde
Artwork by Allison Horst, CC-BY license
Daten filtern
Für unsere Analyse fokussieren wir uns auf die drei Gemeinden Dübendorf, Winterthur und Uster und schauen nur die Jahren 2020 bis 2026 an. Wir filtern darum unsere Daten und erstellen einen kleineren Datensatz. Ihr müsst dies noch nicht verstehen, aber führt es aus:
# A tibble: 599 × 47
egid gdekt ggdenr ggdename egrid lgbkr lparz lparzsx ltyp gebnr gbez
<dbl> <chr> <dbl> <chr> <chr> <dbl> <chr> <lgl> <lgl> <chr> <chr>
1 191884277 ZH 198 Uster CH45… 0 B6431 NA NA 7743 <NA>
2 191886531 ZH 198 Uster CH53… 0 F1506 NA NA 7681 <NA>
3 191886532 ZH 198 Uster CH53… 0 F1506 NA NA 7679 <NA>
4 191887131 ZH 198 Uster CH53… 0 F1506 NA NA 7679 <NA>
5 191887155 ZH 198 Uster CH53… 0 F1507 NA NA 7680 <NA>
6 191887449 ZH 198 Uster CH93… 0 C3536 NA NA 7670 <NA>
7 191901651 ZH 198 Uster CH41… 0 B7210 NA NA 7758 <NA>
8 191902112 ZH 198 Uster CH79… 0 F870 NA NA 7688 <NA>
9 191902113 ZH 198 Uster CH51… 0 F870 NA NA 7744 <NA>
10 191903496 ZH 230 Winterthur CH60… 1 ST33… NA NA 230S… <NA>
# ℹ 589 more rows
# ℹ 36 more variables: gkode <dbl>, gkodn <dbl>, gksce <dbl>, gstat <dbl>,
# gkat <dbl>, gklas <dbl>, gbauj <dbl>, gbaum <dbl>, gbaup <dbl>,
# gabbj <dbl>, garea <dbl>, gvol <dbl>, gvolnorm <dbl>, gvolsce <dbl>,
# gastw <dbl>, ganzwhg <dbl>, gazzi <dbl>, gschutzr <dbl>, gebf <dbl>,
# gwaerzh1 <dbl>, genh1 <dbl>, gwaersceh1 <dbl>, gwaerdath1 <date>,
# gwaerzh2 <dbl>, genh2 <dbl>, gwaersceh2 <dbl>, gwaerdath2 <date>, …
ggplot erstellen
aesthetic mappings: x und y
geom (geometrisches Objekt) einfügen: wir fügen (mit +) einen Layer geom_point() hinzu und kriegen einen Scatterplot
Aesthetic mapping 2: Gemeinden mit Farben hervorheben
Gibt es Unterschiede nach Gemeinden?
Allgemeinen Zusammenhang hervorheben mit einem neuen Layer: geom_smooth (wieder mit + hinzugefügt)
Allgemeinen Zusammenhang hervorheben mit geom_smooth, aber jetzt für alle Gemeinden. Wir benutzen das Mapping zu Gemeinden nun nur noch für Punkte
Um die Gemeinden noch besser zu differenzieren verwenden wir nun noch ein mapping der Punkte zu Form (shape)
Rot-Blau-Grün ist allgemein nicht so eine gute Idee. Wir benutzen nun noch ein color-blind friendly theme von ggthemes, welches wir wieder mit + hinzufügen
Wir sollten unsere Achsen besser beschriften und ein Titel wäre noch toll. Wir können dies über einen Layer mit labs() tun
ggplot(
data = gwr_viz_daten,
mapping = aes(x = garea, y = gvol)
) +
geom_point(mapping = aes(color = ggdename, shape = ggdename)) +
geom_smooth(method = "lm") +
scale_color_colorblind() +
labs(
title = "Gebäudebaujahr und Gebäudevolumen",
subtitle = "Basierend auf GWR für Dübendorf, Uster und Winterthur von 2020 bis 2026",
x = "Gebäudefläche in m²", y = "Gebäudevolumen in m³",
color = "Gemeinde", shape = "Gemeinde"
)Artwork by Allison Horst, CC-BY license
Eine Variable ist kategorisch, wenn sie nur einen Wert aus einer kleinen Menge von vorbestimmten Kategorien annehmen kann.
Beispiel: Gebäudekategorie (gstat) im GWR:
Gebäude projektiert
Gebäude bewilligt
Gebäude im Bau
Gebäude bestehend
Gebäude nicht nutzbar
Gebäude abgebrochen
Gebäude nicht realisiert
Artwork by Allison Horst, CC-BY license
Numerische Variablen können numerische Werte annehmen (duh), was beispielsweise heisst, dass man damit rechnen (bspw. Durchschnitte ausrechnen) kann.
Artwork by Allison Horst, CC-BY license
binwidth ist wichtig: Wie breit sind die bins (Eimer) in der die Verteilung dargestellt wird
Side-by-side Boxplots:
Wickham, Çetinkaya-Rundel, and Grolemund (2023), Figure 1.1
Gebäudefläche pro Gemeinde
Gebäudeflächen pro Gemeinde
position = "fill" ändert die Art, wie der Balken mit den Farben befüllt wirdggsave() speichert den letzten Plot, den ihr generiert habt, auf eurem Computer.
Mit dem Vokabular, welches ihr jetzt kennt und mit was ihr wisst und herausfinden könnt über das GWR und die Informationen darin, nehmt euch 45 Minuten Zeit um:
Erstellt jeweils:
Speichert die Visualisierungen
ZHAW Master Architektur Urban Research II 2026