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
[/kode]
library(tidyverse)library(leaflet)library(htmlwidgets)library(glue)library(sf)# 2019flie <-tempfile()download.file("https://tulospalvelu.vaalit.fi/EKV-2019/ekv-2019_puo_maa.csv.zip", flie)tmpdir <-tempdir()unzip(zipfile = flie, exdir = tmpdir)dat <-read_csv2(glue("{tmpdir}/ekv-2019_tpat_maa.csv"), col_names =FALSE)dat19 <- dat %>%filter(grepl("\\*", X5),!grepl("\\*", X3)) %>%# äänimäärä ja ehdokasnumero kokonaisluvuiksimutate(X3 =as.integer(X3),X35 =as.integer(X35),X39 =as.integer(X39),X40 =as.integer(X40),X41 =as.integer(X41)) %>%# vaalipiirit veksfilter(!is.na(X3)) %>%# Merkistöenkoodauksetmutate(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))# 2015flie <-tempfile()download.file("https://tulospalvelu.vaalit.fi/E-2015/e-2015_puo_maa.csv.zip", flie)tmpdir <-tempdir()unzip(zipfile = flie, exdir = tmpdir)# list.files(tmpdir)dat <-read_csv2(glue("{tmpdir}/e-2015_tpat_maa.csv"), col_names =FALSE)dat15 <- dat %>%filter(grepl("\\*", X5),!grepl("\\*", X3)) %>%# äänimäärä ja ehdokasnumero kokonaisluvuiksimutate(X3 =as.integer(X3),X35 =as.integer(X35),X39 =as.integer(X39),X40 =as.integer(X40),X41 =as.integer(X41)) %>%# vaalipiirit veksfilter(!is.na(X3)) %>%# Merkistöenkoodauksetmutate(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))# 2011flie <-tempfile()download.file("https://tulospalvelu.vaalit.fi/EKV-2011/e-2011_puo_maa.csv.zip", flie)tmpdir <-tempdir()unzip(zipfile = flie, exdir = tmpdir)# list.files(tmpdir)dat <-read_csv2(glue("{tmpdir}/e-2011_tpat_maa.csv"), col_names =FALSE)dat11 <- dat %>%filter(grepl("\\*", X5),!grepl("\\*", X3)) %>%# äänimäärä ja ehdokasnumero kokonaisluvuiksimutate(X3 =as.integer(X3),X35 =as.integer(X35),X39 =as.integer(X39),X40 =as.integer(X40),X41 =as.integer(X41)) %>%# vaalipiirit veksfilter(!is.na(X3)) %>%# Merkistöenkoodauksetmutate(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")dat <-bind_rows(dat11 %>%mutate(vuosi =2011), dat15 %>%mutate(vuosi =2015), dat19 %>%mutate(vuosi =2019))dat %>%mutate(pl =case_when( puolue =="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",grepl("Jessica", puolue) ~"Jessica Eckerman", puolue =="Liberalerna på Åland"~"Liberalerna på Åland", puolue =="Markus Kuotesaho"~"Markus Kuotesaho",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# kuntarajatkunnat19 <-readRDS(url("https://gitlab.com/muuankarski/kelagis_data/raw/master/rds/sf19.RDS"))kunnat19 <-st_transform(x = kunnat19, crs ="+proj=longlat +init=epsg:3067")dat_kartta_voittaja <-left_join(kunnat19, dat %>%filter(vuosi ==2019, rank ==1), by =c("NAMEFIN"="kunta"))dat_kartta_top3 <-left_join(kunnat19, dat_label, by =c("NAMEFIN"="kunta"))pal <- leaflet::colorFactor(palette ="Set1", domain = dat_kartta_voittaja$puolue)labels <-sprintf("<b>%s</b><br/>%s<br/>%s><br/>%s", dat_kartta_top3$NAMEFIN, dat_kartta_top3$`2019`, dat_kartta_top3$`2015`, dat_kartta_top3$`2011`) %>%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")