Eduskuntavaalit 2019: Helsingin äänestysalueiden top 3

data analysis
R
election
vaalit2019
eduskuntavaalit2019
avoin data
open data
spatial
dataviz
Tekijä

Markus Kainu

Julkaistu

15. huhtikuuta 2019

Äänestysaluekohtaiset mitalisijat Helsingissä 2019 eduskuntavaaleissa. Alueen väri kertoo voittajan, siirrä osoitin alueen päälle nähdäksesi kolme parasta. Lähdekoodi kartan alla!

Lähdekoodi

</>
library(tidyverse)
library(leaflet)
library(htmlwidgets)
library(glue)
library(sf)
flie <- tempfile()
download.file("https://tulospalvelu.vaalit.fi/EKV-2019/ekv-2019_ehd_maa.csv.zip", flie)
tmpdir <- tempdir()
unzip(zipfile = flie, exdir = tmpdir)
dat <- read_csv2(glue("{tmpdir}/ekv-2019_aea_maa.csv"), col_names = FALSE)
dat_hel <- dat %>% 
  # valitaan vaan Helsingin äänet JA 
  filter(X6 == "HEL", 
         # ainoastaan äänestyspaikkakohtaiset tiedot
         !grepl("\\*", X5),
         nchar(X5) == 4) %>% 
  select(X5,X6,X15,X16,X18,X19,X35) %>%
  # Merkistöenkoodaukset
  mutate(X19 = iconv(x = X19, from = "Windows-1252", to = "UTF-8"),
         X18 = iconv(x = X18, from = "Windows-1252", to = "UTF-8"),
         X16 = iconv(x = X16, from = "Windows-1252", to = "UTF-8"),
         # äänimäärä ja ehdokasnumero kokonaisluvuiksi
         X35 = as.integer(X35),
         X15 = as.integer(X15)) 

dat_alue <- dat_hel %>%   
  # lasketaan uurnakohtaiset summat
  group_by(X5) %>% 
  mutate(X35_summa = sum(X35, na.rm = TRUE)) %>%
  ungroup() %>% 
  # Lasketaan kullekin uurnalla ja ehdokkaalle ääniosuus
  mutate(osuus = round(X35 / X35_summa*100, 1)) %>% 
  group_by(X5,X16) %>% 
  arrange(desc(osuus)) %>% 
  slice(1:3) %>% 
  mutate(rank = 1:n()) %>% 
  ungroup() %>% 
  mutate(nimi = paste(X18,X19)) %>% 
  select(X5,X16,nimi,X35,rank,osuus) %>% 
  arrange(X5,rank)

dat_alue_voittaja <- dat_alue %>% filter(rank == 1)
dat_alue_top3 <- dat_alue %>% 
  mutate(nimi = glue("{nimi} {osuus} % {X35} ääntä")) %>%
  select(-osuus,- X35) %>% 
  spread(key = rank, value = nimi) %>% 
  setNames(c("X5","X16","t1","t2","t3"))

# äänestysalueet
hel_aanestysalueet <- readRDS(url("https://gitlab.com/muuankarski/kelagis_data/raw/master/rds/sf17_hel_aanestysalue.RDS"))

dat_kartta_top3 <- left_join(hel_aanestysalueet, dat_alue_top3, by = c("tunnus" = "X5"))
dat_kartta_voittaja <- left_join(hel_aanestysalueet, dat_alue_voittaja, by = c("tunnus" = "X5"))

pal <- leaflet::colorFactor(palette = "Set3", domain = factor(dat_kartta_voittaja$nimi))

labels <- sprintf(
  "<italic>%s</italic><br/><strong>1. %s</strong><br/>2. %s<br/>3. %s<br/>",
  dat_kartta_top3$nimi_fi, dat_kartta_top3$t1, dat_kartta_top3$t2, dat_kartta_top3$t3
) %>% lapply(htmltools::HTML)

leaflet(dat_kartta_voittaja) %>% 
  addProviderTiles(provider = providers$CartoDB.Positron) %>% 
  addPolygons(fillColor = ~pal(factor(nimi)),
              color = "white",
              weight = 1,
              opacity = 1,
              dashArray = "3",
              fillOpacity = 0.4,
              highlight = highlightOptions(
                weight = 2,
                color = "#666",
                dashArray = "",
                fillOpacity = 0.4,
                bringToFront = TRUE),
              label = labels,
              labelOptions = labelOptions(opacity = .7,
                                          style = list("font-weight" = "normal",
                                                       padding = "2px 4px"),
                                          textsize = "12px",
                                          direction = "auto")
  ) %>% 
  addLegend(pal = pal, values = ~nimi, opacity = 0.7, title = "Äänestysalueen suosituin ehdokas",
            position = "bottomright")

Uudelleenkäyttö

CC BY 4.0

Viittaus

BibTeX-viittaus:
@online{kainu,
  author = {Markus Kainu},
  title = {Eduskuntavaalit 2019: Helsingin äänestysalueiden top 3},
  date = {},
  url = {https://markuskainu.fi/posts/2019-04-15-helsingin_aanestysalueet-top3},
  langid = {fi}
}
Viitatkaa tähän teokseen seuraavasti:
Markus Kainu. n.d. “Eduskuntavaalit 2019: Helsingin äänestysalueiden top 3.” https://markuskainu.fi/posts/2019-04-15-helsingin_aanestysalueet-top3.