-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
64f1f20
commit 385965a
Showing
11 changed files
with
15 additions
and
0 deletions.
There are no files selected for viewing
15 changes: 15 additions & 0 deletions
15
_freeze/guides/2024-06-29-danmarkskort-i-r/index/execute-results/html.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
{ | ||
"hash": "3630ed390f6dcc78eebfd755c2a988f8", | ||
"result": { | ||
"engine": "knitr", | ||
"markdown": "---\ntitle: Nemt Danmarkskort i R\ncitation:\n url: https://aleksanderbl.dk/guides/2024-05-19-danmarkskort-i-r\nbibliography: refs.bib\nexecute: \n echo: true\n output: false\n cache: true\nlink-external-icon: true\nlink-external-newwindow: true\nother-links:\n - text: Samlet script\n icon: code\n href: https://github.com/aleksanderbl29/aleksanderbldk/blob/main/guides/2024-06-29-danmarkskort-i-r/kort.r\n - text: Mikkel Krogsholms guide\n # icon: computer-mouse\n href: https://www.linkedin.com/pulse/easy-maps-denmark-r-mikkel-freltoft-krogsholm/ \nfig-cap-location: margin\ndate: 2024-06-29\n---\n\n\n## Baggrund\n\nDa jeg skulle lære at lave kort i R, lavede jeg et par hurtige googlesøgninger, hvor jeg kom frem til en god guide lavet af Mikkel Freltoft @krogsholm2021. Jeg opdagede dog hurtigt, at guiden er out-of-date - og derfor skriver jeg denne guide.\n\nI denne guide vil jeg gennemgå hvordan man kan skabe et kort over alle afstemningssteders områder i Danmark. Vi vil både producere et kort for Aarhus Kommune (@fig-aarhus) og et kort for alle afstemningsområder i hele Danmark (@fig-dk).\n\n## Pakker\n\nI R-universet findes der flere pakker til at arbejde med kort. Jeg har valgt at bruge `sf`som den pakke jeg sætter mig ind i, hvad kan. De fleste kan grundlæggende det samme og er bygget op omkring `geometry`, der er den kolonne (eller variabel) i en dataframe, der indeholder figurerne til kortet.\n\nFørst indlæser vi alle pakker der skal bruges.\n\n\n::: {.cell}\n\n```{.r .cell-code}\nlibrary(tidyverse) # Her får vi %>%, ggplot2 og andre smarte funktioner.\nlibrary(sf) # Skal bruges til at arbejde med \"simple features\" (figurer).\n```\n:::\n\n::: {.cell}\n\n:::\n\n\n\n## Data\n\nFor at tegne et præcist danmarkskort kan vi hente `geojson` data fra @apidawa2024. De udstiller en udmærket `API` der kan levere kortdata til os. For at vi kan benytte en `API` i `R` skal vi først definere et `URL` og dernæst bede om at downloade den fil der hører til på den hjemmeside.\n\n\n1. Først definerer vi `API`ens `URL`.\n\n\n::: {.cell}\n\n```{.r .cell-code}\n## Gemmer URL til API-kald\nurl <- \"https://api.dataforsyningen.dk/afstemningsomraader?format=geojson\"\n```\n:::\n\n\n::: {.aside}\nDu behøver *ikke* at vide hvad en `API` er for at kunne gennemføre denne guide.\n:::\n\n2. Dernæst beder vi `R` om at downloade den efterspurgte fil til en midlertidig placering i computerens hukommelse.\n\n\n::: {.cell}\n\n```{.r .cell-code}\n# Skaber midlertidig fil\ngeofile <- tempfile()\n\n# Henter geojson til tempfile\ndownload.file(url, geofile)\n```\n:::\n\n\nVi bruger funktionen `download.file()` og giver den `API`ens `URL` og den midlertidige dataplacering, hvor vi ønsker dataene hentet til.\n\n3. Til sidst omformer vi `geoJSON` til et `sf` format som `R` kan forstå.\n\n\n::: {.cell}\n\n```{.r .cell-code}\n# Læser datafilen ind i R\ngeodata_st <- st_read(geofile)\nafstemningssteder_geodata <- st_as_sf(geodata_st)\n```\n:::\n\n\n::: {.aside}\nHer omformes først til `st` og dernæst til `sf`.\n:::\n\nNu har vi en dataframe i `afstemningssteder_geodata` der indeholder de figurer vi skal bruge for at lave et danmarkskort!\n\n### Optimering af data\n\nFor at vi nemt kan rendere vores plots er det en god ide at gøre figurerne en smule mindre. *Især* når vi er helt nede på afstemningsstedsniveau. Det er nok ikke så relevant, hvis vi arbejder med kommuner eller landsdele.\n\n\n::: {.cell}\n\n```{.r .cell-code}\nafstemningssteder_geodata <- rmapshaper::ms_simplify(afstemningssteder_geodata,\n keep = 0.01, keep_shapes = TRUE)\n```\n:::\n\n\n::: {.aside}\nHer indlæser vi `rmapshaper::ms_simplify()` med pakkens navn for at slippe for at indlæse hele pakken - Vi skal nemlig ikke bruge det hele! Det samme har vi gjort med `ggthemes::theme_map()` nedenfor, fordi der kun skal bruges det ene *theme*\n:::\n\n## Visualisering\n\nNu kommer vi til den sjove del - At lave selve kortet! Vi skal bruge `ggplot2` fra det velkendte *tidyverse*, præcis som når vi laver grafer i mange andre sammenhænge.\n\nVi bruger `geom_sf`, der er indbygget i `ggplot2` til at tegne de figurer der er opbevaret i vores dataframe. Jeg putter derudover også `ggthemes::theme_map()` på, fordi jeg ikke synes kort behøver akselinjer og en baggrund. `theme_map()` er mit klart foretrukne tema til kort.\n\n\n::: {.cell}\n\n```{.r .cell-code}\nggplot(afstemningssteder_geodata) +\n geom_sf() +\n ggthemes::theme_map() +\n labs(title = \"Afstemningssteder i Danmark\",\n caption = \"Kilde: DAWA/DAGI\") +\n theme(legend.position = \"none\",\n plot.title = element_text(size = 20),\n plot.caption = element_text(size = 10))\n```\n\n::: {.cell-output-display}\n{#fig-dk width=672}\n:::\n:::\n\n\n### Visualisering af udsnit\n\nFor at kun vise de afstemningsområder der ligger i Aarhus Kommune kan vi benytte os af `filter()` funktionen fra `dplyr` pakken. Med den kan vi filtrere i vores dataframe, så der kun vises afstemningssteder, hvor kommunenavnet er \"Aarhus\". Derudover har jeg tilføjet et `fill` på afstemningsområdets navn for at give hver område sin egen farve.\n\n\n::: {.cell}\n\n```{.r .cell-code}\nafstemningssteder_geodata %>%\n filter(kommunenavn == \"Aarhus\") %>%\n ggplot(aes(fill = navn)) +\n geom_sf() +\n ggthemes::theme_map() +\n theme(legend.position = \"none\")\n```\n\n::: {.cell-output-display}\n{#fig-aarhus width=672}\n:::\n:::\n\n\n## Samlet kode\n\nAlt hvad jeg har gennemgået i denne guide kan findes i et samlet `r`-script [på min github](https://github.com/aleksanderbl29/aleksanderbldk/blob/main/guides/2024-06-29-danmarkskort-i-r/kort.r).\n\n\n::: {.cell}\n\n:::\n", | ||
"supporting": [], | ||
"filters": [ | ||
"rmarkdown/pagebreak.lua" | ||
], | ||
"includes": {}, | ||
"engineDependencies": {}, | ||
"preserve": {}, | ||
"postProcess": true | ||
} | ||
} |
Binary file added
BIN
+124 KB
_freeze/guides/2024-06-29-danmarkskort-i-r/index/figure-html/fig-aarhus-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+289 KB
_freeze/guides/2024-06-29-danmarkskort-i-r/index/figure-html/fig-dk-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+124 KB
_freeze/guides/2024-06-29-danmarkskort-i-r/index/figure-html/unnamed-chunk-2-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+284 KB
_freeze/guides/2024-06-29-danmarkskort-i-r/index/figure-html/unnamed-chunk-2-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+124 KB
_freeze/guides/2024-06-29-danmarkskort-i-r/index/figure-html/unnamed-chunk-3-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+284 KB
_freeze/guides/2024-06-29-danmarkskort-i-r/index/figure-html/unnamed-chunk-3-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+124 KB
_freeze/guides/2024-06-29-danmarkskort-i-r/index/figure-html/unnamed-chunk-4-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+284 KB
_freeze/guides/2024-06-29-danmarkskort-i-r/index/figure-html/unnamed-chunk-4-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+124 KB
_freeze/guides/2024-06-29-danmarkskort-i-r/index/figure-html/unnamed-chunk-5-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+284 KB
_freeze/guides/2024-06-29-danmarkskort-i-r/index/figure-html/unnamed-chunk-5-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.