Sitzung 21 Interaktive Visualisierungen

21.1 Einleitende Bemerkungen

Bei den drei vorgestellten Paketen handelt es sich um sehr flexible Frameworks, deren ausführliche Besprechung (so wie ggplot2) problemlos ein eigenes Seminar füllen könnten. Hier werden sie nur anhand von einfachsten Beispielen schnell vorgestellt. Bei der weiterführenden Anwendung im Rahmen eines Projekts ist es sinnvoll, sich noch einmal zielgerichtet zu beraten.

21.2 Interaktive Karten mit tmap

21.2.1 Vorbereitung

Wir laden tmap und importieren einen Beispieldatensatz (simple features) mit medizinische Statistiken aus North Carolina:

library(tmap)
library(sf)
demo(nc, ask = F, echo = F)
## Reading layer `nc.gpkg' from data source 
##   `/usr/local/lib/R/4.1/site-library/sf/gpkg/nc.gpkg' using driver `GPKG'
## Simple feature collection with 100 features and 14 fields
## Attribute-geometry relationship: 0 constant, 8 aggregate, 6 identity
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -84.32385 ymin: 33.88199 xmax: -75.45698 ymax: 36.58965
## Geodetic CRS:  NAD27

21.2.2 Bisher: Karten mit ggpot2

Wir haben schon gelernt, wie man mit dem Befehl ggplot() Karten erstellt. Zur Wiederholung zeichnen wir eine Choropletenkarte mit den Geburtsraten der Counties von 1974:

library(ggplot2)

ggplot(nc) +
  geom_sf(aes(fill = BIR74))

21.2.3 Neu: Karten mit tmap

Der Befehl qtm() (quick thematic map) ist ideal um Geodaten schnell zu visualisieren:

qtm(nc, fill = "BIR74")

Für ausführlichere Karten folgt tmap einer sehr ähnlichen Logik wie ggplot2, hat aber einige Unterschiede in der Grammatik:

tm_shape(nc) +
  tm_polygons(col = c("BIR74", "BIR79"), title = "Geburten") +
  tm_facets() +
  tm_layout(panel.show = T,
            panel.labels = c("1974", "1979"),
            legend.outside = T, legend.position = c("center", "center"))

21.2.4 Interaktive Karten

Wenn wir den tmap_mode einmal wechseln,

tmap_mode("view")

zeichnen wir ab sofort interaktive Karten:

qtm(nc)

Hier lassen sich dann auch interaktive Elemente wie Popups, Layer und die Hintergrundkarte bearbeiten. (Hier nur als technische Demonstration, besonders hilfreich finde ich es nicht:)

tm_shape(nc, cache = F) +
  tm_basemap("OpenStreetMap") +
  tm_polygons(col = c("BIR74", "BIR79"), id = "NAME", popup.vars = c("AREA", "CNTY_ID")) +
  tm_facets(as.layers = T)

21.2.5 Weitere Informationen:

21.3 Interaktive Plots mit plotly

Plotly ist ein kommerzielles Produkt, das Framework lässt sich aber offen nutzen. (Verkauft werden sollen dann Dashboards, Beratungsleistungen und Infrastruktur für Firmenkunden.)

21.3.1 Bisher: Scatterplot mit ggplot2

Wir plotten den Beispieldatensatz iris:

ggplot(iris) +
  geom_point(aes(x = Sepal.Length, y = Sepal.Width, color = Petal.Length))

21.3.2 Neu: 3D mit plotly

library(plotly)

plot_ly(iris, x = ~ Sepal.Length, y = ~ Sepal.Width, z = ~ Petal.Width, color = ~ Petal.Length)

21.4 Web apps mit shiny

Shiny ist das umfangreichste und flexibelste der hier vorgestellten Pakete und für das Erstellen von Web-Apps zur interaktiven Visualisierung von Datensätzen gedacht.

Visualisierungen mit Shniny können jedoch nicht als Teil einer statischen HTML-Seite angezeigt werden, sondern müssen zur Ansicht auf einem entsprechend konfigurierten Server laufen.

Wir haben in der Sitzung eine einfache Shiny-App erstellt und lokal angesehen, zur Veröffentlichung müsste sie jedoch z. B. auf https://shinyapps.io hochgeladen werden.

21.4.1 Weitere Informationen