Lounaalla tuli puhetta siitä, miten puolueiden kannatus on kehittynyt kunnissa kolmissa viime eduskuntavaaleissa ja että olisiko sellaista karttaa. Tässä sellainen kartta JA lähdeokoodi sen tekemiseen tuossa alla!
Lähdekoodi
</>
library(tidyverse)
library(leaflet)
library(htmlwidgets)
library(glue)
library(sf)
# 2019
<- tempfile()
flie download.file("https://tulospalvelu.vaalit.fi/EKV-2019/ekv-2019_puo_maa.csv.zip", flie)
<- tempdir()
tmpdir unzip(zipfile = flie, exdir = tmpdir)
<- read_csv2(glue("{tmpdir}/ekv-2019_tpat_maa.csv"), col_names = FALSE)
dat <- dat %>%
dat19 filter(grepl("\\*", X5),
!grepl("\\*", X3)) %>%
# äänimäärä ja ehdokasnumero kokonaisluvuiksi
mutate(X3 = as.integer(X3),
X35 = as.integer(X35),
X39 = as.integer(X39),
X40 = as.integer(X40),
X41 = as.integer(X41)) %>%
# vaalipiirit veks
filter(!is.na(X3)) %>%
# Merkistöenkoodaukset
mutate(
X17 = iconv(x = X17, from = "Windows-1252", to = "UTF-8"),
X11 = iconv(x = X11, from = "Windows-1252", to = "UTF-8"),
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"),
X15 = iconv(x = X15, from = "Windows-1252", to = "UTF-8"),
X14 = iconv(x = X14, from = "Windows-1252", to = "UTF-8"),
X12 = iconv(x = X12, from = "Windows-1252", to = "UTF-8")
%>%
) select(X3,X6,X11,X14,X16,X39,X40,X41) %>%
# filter(X14 == "Helsinki") %>%
group_by(X3,X14) %>%
mutate(osuus = round(X41 / sum(X41) * 100,1)) %>%
arrange(desc(osuus)) %>%
slice(1:3) %>%
mutate(rank = 1:n()) %>%
ungroup() %>%
select(X14,rank,X16,osuus)
# filter(X14 == "Honkajoki") %>% arrange(desc(osuus))
# 2015
<- tempfile()
flie download.file("https://tulospalvelu.vaalit.fi/E-2015/e-2015_puo_maa.csv.zip", flie)
<- tempdir()
tmpdir unzip(zipfile = flie, exdir = tmpdir)
# list.files(tmpdir)
<- read_csv2(glue("{tmpdir}/e-2015_tpat_maa.csv"), col_names = FALSE)
dat <- dat %>%
dat15 filter(grepl("\\*", X5),
!grepl("\\*", X3)) %>%
# äänimäärä ja ehdokasnumero kokonaisluvuiksi
mutate(X3 = as.integer(X3),
X35 = as.integer(X35),
X39 = as.integer(X39),
X40 = as.integer(X40),
X41 = as.integer(X41)) %>%
# vaalipiirit veks
filter(!is.na(X3)) %>%
# Merkistöenkoodaukset
mutate(
X17 = iconv(x = X17, from = "Windows-1252", to = "UTF-8"),
X11 = iconv(x = X11, from = "Windows-1252", to = "UTF-8"),
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"),
X15 = iconv(x = X15, from = "Windows-1252", to = "UTF-8"),
X14 = iconv(x = X14, from = "Windows-1252", to = "UTF-8"),
X12 = iconv(x = X12, from = "Windows-1252", to = "UTF-8")
%>%
) select(X3,X6,X11,X14,X16,X39,X40,X41) %>%
# filter(X14 == "Helsinki") %>%
group_by(X3,X14) %>%
mutate(osuus = round(X41 / sum(X41) * 100,1)) %>%
arrange(desc(osuus)) %>%
slice(1:3) %>%
mutate(rank = 1:n()) %>%
ungroup() %>%
select(X14,rank,X16,osuus)
# filter(X14 == "Honkajoki") %>% arrange(desc(osuus))
# 2011
<- tempfile()
flie download.file("https://tulospalvelu.vaalit.fi/EKV-2011/e-2011_puo_maa.csv.zip", flie)
<- tempdir()
tmpdir unzip(zipfile = flie, exdir = tmpdir)
# list.files(tmpdir)
<- read_csv2(glue("{tmpdir}/e-2011_tpat_maa.csv"), col_names = FALSE)
dat <- dat %>%
dat11 filter(grepl("\\*", X5),
!grepl("\\*", X3)) %>%
# äänimäärä ja ehdokasnumero kokonaisluvuiksi
mutate(X3 = as.integer(X3),
X35 = as.integer(X35),
X39 = as.integer(X39),
X40 = as.integer(X40),
X41 = as.integer(X41)) %>%
# vaalipiirit veks
filter(!is.na(X3)) %>%
# Merkistöenkoodaukset
mutate(
X17 = iconv(x = X17, from = "Windows-1252", to = "UTF-8"),
X11 = iconv(x = X11, from = "Windows-1252", to = "UTF-8"),
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"),
X15 = iconv(x = X15, from = "Windows-1252", to = "UTF-8"),
X14 = iconv(x = X14, from = "Windows-1252", to = "UTF-8"),
X12 = iconv(x = X12, from = "Windows-1252", to = "UTF-8")
%>%
) select(X3,X6,X11,X14,X16,X39,X40,X41) %>%
# filter(X14 == "Helsinki") %>%
group_by(X3,X14) %>%
mutate(osuus = round(X41 / sum(X41) * 100,1)) %>%
arrange(desc(osuus)) %>%
# slice(1:3) %>%
mutate(rank = 1:n()) %>%
ungroup() %>%
select(X14,rank,X16,osuus)
names(dat11) <- c("kunta","rank","puolue","osuus")
names(dat15) <- c("kunta","rank","puolue","osuus")
names(dat19) <- c("kunta","rank","puolue","osuus")
<- bind_rows(dat11 %>% mutate(vuosi = 2011),
dat %>% mutate(vuosi = 2015),
dat15 %>% mutate(vuosi = 2019))
dat19
%>%
dat mutate(pl = case_when(
== "Vihreä liitto" ~ "VIHR",
puolue == "Vasemmistoliitto" ~ "VAS",
puolue == "Suomen Sosialidemokraattinen Puolue" ~ "SDP",
puolue == "Suomen ruotsalainen kansanpuolue" ~ "RKP",
puolue == "Suomen Kristillisdemokraatit (KD)" ~ "KD",
puolue == "Suomen Keskusta" ~ "KESK",
puolue == "Sininen tulevaisuus" ~ "SIN",
puolue == "Perussuomalaiset" ~ "PS",
puolue == "Kansallinen Kokoomus" ~ "KOK",
puolue == "Åländsk samling" ~ "Åländsk samling",
puolue == "Åländsk samling gemensam lista" ~ "Åländsk samling gemensam lista",
puolue == "Alternativ för Åland - gemensam lista" ~ "Alternativ för Åland - gemensam lista",
puolue == "Gemensam lista Alliansen för Åland - samarbete för självstyrelse och utveckling" ~ "Gemensam lista Alliansen för Åland - samarbete för självstyrelse och utveckling",
puolue grepl("Jessica", puolue) ~ "Jessica Eckerman",
== "Liberalerna på Åland" ~ "Liberalerna på Åland",
puolue == "Markus Kuotesaho" ~ "Markus Kuotesaho",
puolue TRUE ~ "muut"
%>%
)) mutate(label1 = glue("{rank}. {pl} {osuus} %")) %>%
select(-pl,-puolue,-osuus) %>%
spread(rank,label1) %>%
mutate(label = glue("{vuosi}: {`1`}, {`2`}, {`3`}")) %>%
select(-`1`,-`2`,-`3`) %>%
spread(vuosi,label) -> dat_label
# kuntarajat
<- readRDS(url("https://gitlab.com/muuankarski/kelagis_data/raw/master/rds/sf19.RDS"))
kunnat19 <- st_transform(x = kunnat19, crs = "+proj=longlat +init=epsg:3067")
kunnat19
<- left_join(kunnat19, dat %>% filter(vuosi == 2019, rank == 1),
dat_kartta_voittaja by = c("NAMEFIN" = "kunta"))
<- left_join(kunnat19, dat_label, by = c("NAMEFIN" = "kunta"))
dat_kartta_top3
<- leaflet::colorFactor(palette = "Set1", domain = dat_kartta_voittaja$puolue)
pal
<- sprintf(
labels "<b>%s</b><br/>%s<br/>%s><br/>%s",
$NAMEFIN,
dat_kartta_top3$`2019`,
dat_kartta_top3$`2015`,
dat_kartta_top3$`2011`
dat_kartta_top3%>% lapply(htmltools::HTML)
)
leaflet(dat_kartta_voittaja) %>%
addProviderTiles(provider = providers$CartoDB.Positron) %>%
addPolygons(fillColor = ~pal(puolue),
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 = ~puolue, opacity = 0.7, title = "Kunnan suosituin puolue 2019",
position = "bottomright")
Uudelleenkäyttö
CC BY 4.0
Viittaus
BibTeX-viittaus:
@online{kainu2019,
author = {Markus Kainu and Markus Kainu},
title = {Eduskuntavaalit 2019: Suosituimmat puolueet kunnittain 2011,
2015 ja 2019},
date = {2019-08-05},
url = {https://markuskainu.fi/posts/2019-05-08-kuntien-top-puolueet-2011-2015-2019},
langid = {fi}
}
Viitatkaa tähän teokseen seuraavasti:
Markus Kainu, and Markus Kainu. 2019. “Eduskuntavaalit 2019:
Suosituimmat puolueet kunnittain 2011, 2015 ja 2019.” August 5,
2019. https://markuskainu.fi/posts/2019-05-08-kuntien-top-puolueet-2011-2015-2019.