Skip to content

Instantly share code, notes, and snippets.

@eLindros
Created October 27, 2017 11:31
Show Gist options
  • Save eLindros/7d962d1e32fe44f662a4cafc06891f5a to your computer and use it in GitHub Desktop.
Save eLindros/7d962d1e32fe44f662a4cafc06891f5a to your computer and use it in GitHub Desktop.
[Example to Map Data with R] #gis #germany #bundesland
library(tidyverse)
library(sp)
library(mapproj)
# Lade Kartendaten mit Bundeslandgrenzen
deu <- readRDS("DEU_adm1.rds")
# Lade meine Daten, die ich dann anspielen will an deu mit BUNDESLAND-Variable
load("tk3.RData") # Tabelle tmp wird geladen
tmp1 <- tmp %>%
select(VERSNR, ARZTNUMMER, BEHANDLUNGSDATUM, BUNDESLAND) %>%
unique() %>%
filter(!is.na(BUNDESLAND)) %>%
count(BUNDESLAND)
# Da ich noch einen Quotienten berechnen will (der dann auch auf der Karte
# dargestellt wird) bereite ich noch eine weitere Tabelle mit den Einwohnerdaten
# der Bundesländer vor
BUNDESLAND <- c(
"Baden-Württemberg",
"Bayern",
"Berlin",
"Brandenburg",
"Bremen",
"Hamburg",
"Hessen",
"Mecklenburg-Vorpommern",
"Niedersachsen",
"Nordrhein-Westfalen",
"Rheinland-Pfalz",
"Saarland",
"Sachsen",
"Sachsen-Anhalt",
"Schleswig-Holstein",
"Thüringen"
)
# Die hatte ich irgendwo rauskopiert
einw_31.12.2015 <- c(
10879618,
12843514,
3520031,
2484826,
671489,
1787408,
6176172,
1612362,
7926599,
17865516,
4052803,
995597,
4084851,
2245470,
2858714,
2170714
)
# Jetzt füge ich die Spalten BUNDESLAND und einw_31.12.. zusammen und
# verknüpfe diese direkt mit den daten
tmp2 <- tmp1 %>%
left_join(
tibble(BUNDESLAND, EINW=einw_31.12.2015) # Hier kreiere ich die Tabelle aus den Spalten
) %>%
mutate(
K = n / (EINW /100000) # Hier berechne ich den Quotienten, den ich darstellen will
)
# Die nächsten Schritte habe ich von einem Tutorial: http://rmhogervorst.nl/cleancode/blog/2017/01/06/plotting-a-map-with-ggplot2.html
tmp3 <- tibble(id=row.names(deu@data), BUNDESLAND=deu@data$NAME_1)
tmp4 <- left_join(tmp3, tmp2)
tmp5 <- left_join(fortify(deu), tmp4, by="id")
# Prognos Farben
rot <- "#e40019"
blau <- "#00568f"
dunkelblau <- "#001e32"
# Hier dann der eigentlich plot
ggplot(tmp5) +
geom_polygon(aes(x = long, y = lat, group = group, fill=K),
color = "white") +
coord_map() + theme_void() +
scale_fill_continuous(low=blau, high = rot, name="Arzt-Patienten-Kontakte\n je 100.000 Einwohner")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment