knitr::opts_chunk$set( eval = FALSE, collapse = TRUE, comment = "#>" )
library(karttasovellus) library(dplyr) library(glue) library(ggplot2) library(sf) library(hrbrthemes) library(leaflet) process_zipdata <- function(varname = "Kokonaislukema"){ dtmp <- karttasovellus::dfzip_v20220105[karttasovellus::dfzip_v20220105$variable == varname, ] return(dtmp) } dd2 <- process_zipdata() process_zipdata_timeseries <- function(varname = "Kokonaislukema"){ # dtmp <- karttasovellus::dfzip_v20220105_aikasarja[karttasovellus::dfzip_v20220105_aikasarja$variable == varname & karttasovellus::dfzip_v20220105_aikasarja$aika == year, ] dtmp <- karttasovellus::dfzip_v20220105_aikasarja[karttasovellus::dfzip_v20220105_aikasarja$variable == varname, ] return(dtmp) } dd3 <- process_zipdata_timeseries() get_region_zipdata <- function(){ karttasovellus::region_data_zip } dd4 <- get_region_zipdata() get_naapurikoodit_zip <- function(regio_selected = 924){ region_data <- karttasovellus::region_data_zip neight_muni <- karttasovellus::region_data[karttasovellus::region_data$region_code == regio_selected,][["neigbours"]][[1]] neigh_list <- region_data[region_data$kuntanro %in% neight_muni,]$neigbours neigh <- unique(do.call("c", neigh_list)) return(neigh) } map_zipcodes <- function(input_value_region_selected = 924, # input_value_regio_show_mode = "kaikki tason alueet" input_value_regio_show_mode = "valittu alue ja sen naapurit", input_value_variable = "Kokonaislukema", leaflet = FALSE){ input_value_regio_level <- "Postinumeroalueet" region_data <- get_region_zipdata() dat <- process_zipdata(varname = input_value_variable) dat <- left_join(region_data,dat,by = c("region_name" = "aluenimi"), keep = TRUE) naapurikoodit <- get_naapurikoodit_zip(regio_selected = input_value_region_selected) dat <- dat %>% mutate(color = ifelse(aluenimi %in% input_value_region_selected, TRUE, FALSE)) if (input_value_regio_show_mode == "kaikki tason alueet"){ dat <- dat } else if (input_value_regio_show_mode == "valittu alue ja sen naapurit"){ dat <- dat %>% filter(aluekoodi %in% naapurikoodit) } else if (input_value_regio_show_mode == "valittu alue"){ naapurikoodit <- karttasovellus::region_data_zip[karttasovellus::region_data_zip$kuntanro == input_value_region_selected,]$region_code dat <- dat %>% filter(aluekoodi %in% naapurikoodit) } # luodaan alaotsikko kuvan_subtitle <- glue("Aluetaso: {input_value_regio_level}") if (!leaflet){ ggplot(data = dat, aes(fill = value)) + geom_sf(color = alpha("white", 1/3)) + geom_sf(aes(color = color), fill = NA, show.legend = FALSE) + scale_fill_fermenter(palette = "YlGnBu", type = "seq", direction = 1) + scale_color_manual(values = c(alpha("white", 1/3), "black")) + theme_ipsum(base_family = "PT Sans", plot_title_family = "PT Sans", subtitle_family = "PT Sans", grid_col = "white", plot_title_face = "plain") -> p if (input_value_regio_show_mode == "kaikki tason alueet"){ p <- p + geom_sf_label(data = dat %>% filter(aluenimi == input_value_region_selected), aes(label = paste(aluenimi, value)), fill = "white", color = "black", family = "PT Sans") } else if (input_value_regio_show_mode %in% c("valittu alue ja sen naapurit","valittu alue")){ p + geom_sf_label(data = dat, aes(label = paste(aluenimi, round(value, 1))), fill = "white", color = "black", family = "PT Sans") -> p } p + theme(axis.text.x = element_blank(), axis.text.y = element_blank(), axis.title.x = element_blank(), axis.title.y = element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), legend.position = c(0.1, 0.5), plot.title.position = "plot") + labs(title = glue("{input_value_variable}"), subtitle = kuvan_subtitle, caption = glue("Huono-osaisuus Suomessa -karttasovellus (Diak)\nData: Tilastokeskus Paavo (perusdata) & Diak (mediaanisuhteutus)\nTiedot haettu:{Sys.Date()}"), fill = paste0(add_line_break2(input_value_variable, 20), "\n(suhdeluku)")) } else { dat_wgs84 <- sf::st_transform(x = dat, crs = "+proj=longlat +datum=WGS84") pal <- leaflet::colorNumeric(palette = "YlGnBu", domain = dat_wgs84$value) labels <- sprintf( "<italic>%s</italic><br/><strong>%s</strong>", dat_wgs84$region_name, round(dat_wgs84$value,1) ) %>% lapply(htmltools::HTML) base <- leaflet(data = dat_wgs84) %>% addTiles(urlTemplate = "http://tiles.kartat.kapsi.fi/taustakartta/{z}/{x}/{y}.jpg", #urlTemplate = "https://beta-karttakuva.maanmittauslaitos.fi/vectortiles/v20/{z}/{x}/{y}.jpg", # https://beta-karttakuva.maanmittauslaitos.fi/vectortiles/v20/#9.51/61.6445/27.3462 options = tileOptions(opacity = .4)) if (input_value_regio_show_mode == "kaikki tason alueet") base <- base %>% setView(zoom = 12, lng = 25.5745, lat = 64.103) base %>% addPolygons(fillColor = ~pal(value), color = "white", weight = 2, opacity = 0, dashArray = "3", fillOpacity = 0.7, 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 = ~value, opacity = 0.7, title = input_value_variable, position = "bottomright") } } plot_zipcodes_bar <- function(input_value_region_selected = "Veteli Keskus", # input_value_regio_show_mode = "kaikki tason alueet" input_value_regio_show_mode = "kaikki tason alueet", input_value_variable = "Kokonaislukema"){ input_value_regio_level <- "Postinumeroalueet" region_data <- get_region_zipdata() dat <- process_zipdata(varname = input_value_variable) naapurikoodit <- get_naapurikoodit_zip(regio_selected = input_value_region_selected) dat <- dat %>% mutate(color = ifelse(aluenimi %in% input_value_region_selected, TRUE, FALSE)) if (input_value_regio_show_mode == "kaikki tason alueet"){ dat <- dat } else if (input_value_regio_show_mode == "valittu alue ja sen naapurit"){ dat <- dat %>% filter(aluekoodi %in% naapurikoodit) } else if (input_value_regio_show_mode == "valittu alue"){ naapurikoodit <- karttasovellus::region_data_zip[karttasovellus::region_data_zip$kuntanro == input_value_region_selected,]$region_code dat <- dat %>% filter(aluekoodi %in% naapurikoodit) } # luodaan alaotsikko kuvan_subtitle <- glue("Aluetaso: {input_value_regio_level}") ggplot(data = dat, aes(y = reorder(aluenimi, value), x = value, fill = value)) + geom_col() + scale_fill_fermenter(palette = "YlGnBu", type = "seq", direction = 1) + scale_color_fermenter(palette = "YlGnBu", type = "seq", direction = 1) + theme_ipsum(base_family = "PT Sans", plot_title_family = "PT Sans", subtitle_family = "PT Sans", grid_col = "white", plot_title_face = "plain") -> p # if (input_value_regio_show_mode == "kaikki tason alueet"){ # p <- p + geom_sf_label(data = dat %>% filter(aluenimi == input_value_region_selected), # aes(label = paste(aluenimi, value)), # fill = "white", color = "black", family = "PT Sans") # # } else if (input_value_regio_show_mode == "valittu alue ja sen naapurit"){ # p + geom_sf_label(data = dat, # aes(label = paste(aluenimi, round(value, 1))), # fill = "white", color = "black", family = "PT Sans") -> p # } p + theme(plot.title.position = "plot") + labs(title = glue("{input_value_variable}"), subtitle = kuvan_subtitle, caption = glue("Huono-osaisuus Suomessa -karttasovellus (Diak)\nData: Tilastokeskus Paavo (perusdata) & Diak (mediaanisuhteutus)\nTiedot haettu:{Sys.Date()}"), fill = paste0(add_line_break2(input_value_variable, 20), "\n(suhdeluku)")) } plot_zipcodes_line <- function(input_value_region_selected = 924, # input_value_regio_show_mode = "kaikki tason alueet" input_value_regio_show_mode = "kaikki tason alueet", input_value_variable = "Kokonaislukema"){ input_value_regio_level <- "Postinumeroalueet" region_data <- get_region_zipdata() dat <- process_zipdata_timeseries(varname = input_value_variable) dat <- dat %>% mutate(color = ifelse(aluenimi %in% input_value_region_selected, TRUE, FALSE)) if (input_value_regio_show_mode == "kaikki tason alueet"){ dat <- dat } else if (input_value_regio_show_mode == "valittu alue ja sen naapurit"){ naapurikoodit <- get_naapurikoodit_zip(regio_selected = input_value_region_selected) dat <- dat %>% filter(aluekoodi %in% naapurikoodit) } else if (input_value_regio_show_mode == "valittu alue"){ naapurikoodit <- karttasovellus::region_data_zip[karttasovellus::region_data_zip$kuntanro == input_value_region_selected,]$region_code dat <- dat %>% filter(aluekoodi %in% naapurikoodit) } # luodaan alaotsikko kuvan_subtitle <- glue("Aluetaso: {input_value_regio_level}") ggplot(data = dat, aes(y = value, x = aika, color = aluenimi, group = aluenimi)) + geom_line() + # scale_fill_fermenter(palette = "YlGnBu", type = "seq", direction = 1) + # scale_color_fermenter(palette = "YlGnBu", type = "seq", direction = 1) + theme_ipsum(base_family = "PT Sans", plot_title_family = "PT Sans", subtitle_family = "PT Sans", grid_col = "white", plot_title_face = "plain") -> p if (input_value_regio_show_mode == "kaikki tason alueet"){ p <- p + theme(legend.position = "none") } else if (input_value_regio_show_mode == "valittu alue ja sen naapurit"){ p <- p + theme(legend.position = "right") } p + theme(plot.title.position = "plot") + labs(title = glue("{input_value_variable}"), subtitle = kuvan_subtitle, caption = glue("Huono-osaisuus Suomessa -karttasovellus (Diak)\nData: Tilastokeskus Paavo (perusdata) & Diak (mediaanisuhteutus)\nTiedot haettu:{Sys.Date()}"), fill = paste0(add_line_break2(input_value_variable, 20), "\n(suhdeluku)")) }
# 'Alimpaan tuloluokkaan kuuluvat taloudet' # 'Alimpaan tuloluokkaan kuuluvat täysi-ikäiset' # 'Kokonaislukema' # 'Työttömät' # "valittu alue ja sen naapurit" # "kaikki tason alueet" map_zipcodes(input_value_region_selected = 91, # input_value_region_selected = "Pohjois-Meilahti", # input_value_regio_show_mode = "valittu alue", input_value_regio_show_mode = "kaikki tason alueet", # input_value_variable = 'Työttömät', input_value_variable = 'Kokonaislukema', leaflet = F) plot_zipcodes_bar(input_value_region_selected = 924, # input_value_region_selected = "Pohjois-Meilahti", input_value_regio_show_mode = "valittu alue", # input_value_regio_show_mode = "kaikki tason alueet", input_value_variable = 'Työttömät' # input_value_variable = 'Kokonaislukema' ) plot_zipcodes_line(#input_value_region_selected = "Veteli Keskus", input_value_region_selected = 924, input_value_regio_show_mode = "valittu alue", # input_value_regio_show_mode = "valittu alue ja sen naapurit", # input_value_regio_show_mode = "kaikki tason alueet", # input_value_variable = 'Työttömät', input_value_variable = 'Kokonaislukema')
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.