::p_load(tmap, tidyverse, sf) pacman
in-class_ex03: Analytical Mapping
Getting Started
Installing and loading packages
Importing data
<- read_rds("data/rds/NGA_wp.rds") NGA_wp
Basic Choropleth Mapping
Visualising distribution of non-functional water point
<- tm_shape(NGA_wp) +
p1 tm_fill("wp_functional",
n=10,
style="equal",
palette="Blues") +
tm_borders(lwd = 0.1,
alpha = 1) +
tm_layout(main.title = "Distribution of functional water point by LGAs",
legend.outside = FALSE)
Choropleth of total water points
<- tm_shape(NGA_wp) +
p2 tm_fill("total_wp",
n=10,
style="equal",
palette="Blues") +
tm_borders(lwd = 0.1,
alpha = 1) +
tm_layout(main.title = "Distribution of functional water point by LGAs",
legend.outside = FALSE)
tmap_arrange(p2,p1,nrow=1)
Choropleth Map for Rates
Deriving Proportion of Functional Water Points and Non-Functional Water Points
<- NGA_wp %>%
NGA_wp mutate(pct_functional = wp_functional/total_wp) %>%
mutate(pct_nonfunctional = wp_nonfunctional/total_wp)
Plotting map of rate
Plot a choropleth map showing the distribution of percentage functional water point by LGA
tm_shape(NGA_wp) +
tm_fill("pct_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 by LGAs",
legend.outside = TRUE)
Extreme Value Maps
Percentile Map
5.1.1 Data Preparation
Step 1: Exclude records with Na by using the code chunk below.
<- NGA_wp %>%
NGA_wp drop_na()
Step 2: Creating customized classification and extracting values
<- c(0,.01,.1,.5,.9,.99,1)
percent <- NGA_wp["pct_functional"] %>%
var 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
Step 3:
<- function(vname,df) {
get.var <-df[vname] %>%
v st_set_geometry(NULL)
<- unname(v[,1])
v return(v)
}
5.1.4 A percentile mapping function
<- function(vnam, df, legtitle=NA, mtitle="Percentile Map"){
percentmap <- c(0,.01,.1,.5,.9,.99,1)
percent <- get.var(vnam, df)
var <- quantile(var, percent)
bperc tm_shape(df) +
tm_polygons() +
tm_shape(df) +
tm_fill(vnam,
title=legtitle,
breaks=bperc,
palette="Blues",
labels=c("< 1%", "1% - 10%", "10% - 50%", "50% - 90%", "90% - 99%", "> 99%")) +
tm_borders() +
tm_layout(main.title = mtitle,
title.position = c("right","bottom"))
}
Test drive
percentmap("total_wp", NGA_wp)
Box Map
ggplot(data = NGA_wp,
aes(x = "",
y = wp_nonfunctional)) +
geom_boxplot()