In-class_Ex03

Published

January 25, 2023

Modified

March 27, 2023

pacman::p_load(sf, tmap, tidyverse)

##Importing Data

NGA_wp <- read_rds("data/rds/NGA_wp.rds")
p1 <- tm_shape(NGA_wp) +
  tm_fill("wp_functional", 
          n=10,
          style="equal",
          palette = "Blues") + 
  tm_borders(lwd=0.1, 
             alpha = 1) + 
  tm_layout(main.title = "Distribution of funtional water points",
            legend.outside = FALSE)
p1

#tmap_arrange(p2, p1, nrow=1)
NGA_wp <- NGA_wp %>%
  mutate(pct_functional = wp_functional/total_wp) %>%
  mutate(pct_nonfunctional = wp_nonfunctional/total_wp)
tm_shape(NGA_wp) +
  tm_fill("wp_functional", 
          n=10,
          style="equal",
          palette = "Blues",
          legend.hist = TRUE) + 
  tm_borders(lwd=0.1, 
             alpha = 1) + 
  tm_layout(main.title = "Rate map of functional water point",
            legend.outside = TRUE)

#Percentile Map #step 1; exclude records with NA

NGA_wp <- NGA_wp %>%
  drop_na()

#step 2 creating customised classification and extracting values

percent <- c(0, .01, .1, .5, .9, .99, 1)
var <- NGA_wp["pct_functional"] %>%
  st_set_geometry(NULL)
quantile(var[,1], percent)
       0%        1%       10%       50%       90%       99%      100% 
0.0000000 0.0000000 0.2169811 0.4791667 0.8611111 1.0000000 1.0000000 
get.var <- function(vname, df){
  v <- df[vname] %>%
    st_set_geometry(NULL)
  v <- unname(v[,1])
  return(v)
}
percentmap <- function(vname, df, legtitle=NA, mtitle="Percentile Map"){
  percent <- c(0, .01, .1, .5, .9, .99, 1)
  var <- get.var(vname, df)
  bperc <- quantile(var, percent)
  tm_shape(df) + 
  tm_polygons() + 
  tm_shape(df) + 
    tm_fill(
      vname,
      title = legtitle,
      breaks = bperc,
      palette = "Blues",
      labels = c("< 1%", "1% - 10%", "10% - 50%", "50% - 90%", "90% - 99%", "99% - 100%")
    ) + 
    tm_borders()+ 
    tm_layout(main.title = mtitle,
              title.position = c("right", "bottom"))
}
percentmap("pct_functional", NGA_wp)