under_construction.RmdThis vignette demonstrates how to pull in under construction data
from CMHC using the cmhc package, link it with geographic
data from CensusMapper using the
cancensus package and map the under construction data. ##
CMHC data
library(dplyr)
#devtools::install_github("mountainmath/cmhc")
library(cmhc)
cma="Montreal"
year=2021
month=07
census_cma=census_geography_list[[cma]]
cma_header=substr(census_cma, nchar(census_cma)-2,nchar(census_cma))
#get all under construction data for Vancouver and pad CT GeoUIDs.
under_construction <- get_cmhc(
cmhc_snapshot_params(
table_id = cmhc_table_list["Scss Under Construction CT"],
breakdown_geography_type="CT",
geography_id = cmhc_geography_list[[cma]],
year = year,
month = month))
under_construction <- under_construction %>%
mutate(GeoUID = cmhc_geo_uid_for_ct(cma_header,X1))
geos <- inner_join(geos,under_construction, by="GeoUID") %>%
sf::st_sf()
bg_color="#c0c0c0"
theme_opts<-list(theme(panel.grid.minor = element_blank(),
#panel.grid.major = element_blank(), #bug, not working
panel.grid.major = element_line(colour = bg_color),
panel.background = element_rect(fill = bg_color, colour = NA),
plot.background = element_rect(fill=bg_color, size=1,linetype="solid"),
axis.line = element_blank(),
axis.text.x = element_blank(),
axis.text.y = element_blank(),
axis.ticks = element_blank(),
axis.title.x = element_blank(),
axis.title.y = element_blank()))After defining a basic theme we can go ahead and map the data.
breaks=c(-Inf,1,25,50,100,250,500,750,1000,2000,Inf)
labels <- c(paste0("0 - ",breaks[2]))
for(i in 2:(length(breaks)-2)){
labels[i] = paste(breaks[i],breaks[i+1], sep=" - ")
}
labels[length(breaks)-1]=paste0("Over ",breaks[length(breaks)-1])
#colors=c("darkred",(RColorBrewer::brewer.pal(length(labels)-1,"YlGnBu")))
labels=factor(labels, levels=labels)
colors=setNames(c("#808080",RColorBrewer::brewer.pal(length(labels)-1,"PiYG")),labels)
#colors=factor(as.character(colors),levels=as.character(colors))
# categorize the numbers under contruction
geos$categories <- geos$All %>% cut(breaks=breaks, labels=labels)
total=sum(geos$All)
ggplot(geos) +
geom_sf(aes(fill = categories), size = 0.05) +
scale_fill_manual(labels=labels, values=colors, name = "# Units") +
ggtitle(paste0(cma, " CMA Under Construction ",month,"-",year," (",prettyNum(total,big.mark = ",")," total)")) +
theme_opts