From: Frederik Vanrenterghem Date: Mon, 6 Nov 2017 12:54:00 +0000 (+0800) Subject: Create animated gif for multiple cities. X-Git-Url: http://git.vanrenterghem.biz/R/project-au-taxstats.git/commitdiff_plain/8a23a6086193c79ff00a532f2b4d893e741e7ba9?ds=sidebyside;hp=a4d86b2c1b034830351c7d5d9e72a1acb2d36a29 Create animated gif for multiple cities. --- diff --git a/AU-taxstats.R b/AU-taxstats.R index 76f9dcf..8bbcb26 100644 --- a/AU-taxstats.R +++ b/AU-taxstats.R @@ -5,6 +5,7 @@ devtools::install_github("tidyverse/ggplot2") # needed for geom_sf library(ggplot2) library(viridis) library(ggthemes) +library(animation) # for saveGIF # Obtain the tax dataset if not available yet if(!file.exists("data/taxstats2015individual06ataxablestatusstateterritorypostcode.csv")) @@ -56,17 +57,27 @@ sa3$incomeperearningcapita <- (sa3$TotalIncome / sa3$TotalIncomeEarners)/1000 # As SA3s are still to narrow around cities compared to in the country, # let's simply look at Melbourne -ggplot(dplyr::filter(sa3, data.table::`%like%`(GCC_NAME16, "Melbourne") )) + +cities = c("Perth","Melbourne","Sydney","Adelaide","Brisbane") + +# Create a plot for each of these cities. This is wrapped in a function +# for use by saveGIF + +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 = "") + coord_sf(datum = NA) + # Work around https://github.com/tidyverse/ggplot2/issues/2071 to remove gridlines - labs(title = "Melbourne \nincome distribution", + labs(title = paste0(x," \nincome distribution"), subtitle = "2014/15, in 1000s AUD", caption = "\nSource: Australian Taxation Office") + theme_economist() + theme(legend.position = "bottom", legend.text = element_text(angle = 45, hjust = 1, size = 8), axis.text = element_blank(), - axis.ticks = element_blank()) - + axis.ticks = element_blank()) + print(plot) +}) +} + +saveGIF(plots(),movie.name = "AUCitiesIncomeDistribution.gif", interval = 2)