unzip(zipfile = "data/1270055001_sa3_2016_aust_shape.zip", exdir = "data/")
sa3 <- st_read(dsn = "data/", layer = "SA3_2016_AUST", stringsAsFactors = FALSE)
-taxstats.sa3 <- merge(x = taxstats, y = sa3, by.x = "Postcode", by.y = "POA_CODE16", all.y = TRUE)
# Create a matrix of intersecting postal codes and SA3's
POA_SAs <- st_intersects(x=sa3, y=POA, sparse=FALSE)
taxstats.POA$`Total.Income.or.Loss..`[is.na(taxstats.POA$`Total.Income.or.Loss..`)] <- 0
taxstats.POA$`Total.Income.or.Loss.no.`[is.na(taxstats.POA$`Total.Income.or.Loss.no.`)] <- 0
-# Perform matrix multiplication to obtain the income metrix per SA3
+# Perform matrix multiplication to obtain the income metrics per SA3
# Total income will be incorrect, as the POAs intersect with multiple SA3s
sa3$TotalIncome <- as.vector(POA_SAs %*% as.matrix(taxstats.POA$`Total.Income.or.Loss..`))
sa3$TotalIncomeEarners <- as.vector(POA_SAs %*% as.matrix(taxstats.POA$`Total.Income.or.Loss.no.`))
plots <- function() {lapply(cities, function(x){
plot <- ggplot(dplyr::filter(sa3, data.table::`%like%`(GCC_NAME16, x) )) +
geom_sf(aes(fill = incomeperearningcapita, color = incomeperearningcapita)) +
- scale_fill_viridis(name = "") +
- scale_color_viridis(name = "") +
+ scale_fill_viridis(name = "",
+ limits = c(min(sa3$incomeperearningcapita, na.rm = TRUE),max(sa3$incomeperearningcapita, na.rm = TRUE))) +
+ scale_color_viridis(name = "",
+ limits = c(min(sa3$incomeperearningcapita, na.rm = TRUE),max(sa3$incomeperearningcapita, na.rm = TRUE))) +
coord_sf(datum = NA) + # Work around https://github.com/tidyverse/ggplot2/issues/2071 to remove gridlines
labs(title = paste0(x," \nincome distribution"),
subtitle = "2014/15, in 1000s AUD",
})
}
-saveGIF(plots(),movie.name = "AUCitiesIncomeDistribution.gif", interval = 2)
+saveGIF(plots(),movie.name = "AUCitiesIncomeDistribution.gif", interval = 2, loop = 2)