原创翻译 | 利用R用动图展示日本老龄化
美国人口观测局通过API向开拓者开放了他们大量的数据库。个中之一是国际数据库(International Data Base),它是人口观测部分提供的对多个国度汗青人口分类统计(通过年数和性别)的数据库,而且时间是一直延伸到2050年。Kyle Walker建设了易于通过R语言下载数据集的措施包(今朝只能在GitHub上找到),而且利用这个包来做了下图日本从1990年至今人口变革的动画。正如你所看到的,人口观测局预测跟着时间推移,人口老龄化问题会越来越严重。留意到,恒久下降的新出生人口也被加到图表的下方。事实上,日本人口只是从本年开始首次下降。
Kyle 利用ggplot包的geom_bar图来做人口金字塔的可视化,同时操作从ggthemes包的经济主体来描写它。要运行这段代码你必需申请一小我私家口观测API的key(你必需提供你的公司和邮箱地点,一分钟之后就完成申请),而且安装ImageMagick来支持动画包。你可以看到下面Kyle的源代码(我稍微改编了它来展示从1990年开始的汗青人口统计变革和为了颁发这个博客而重设动画巨细)
library(idbr) # devtools::install_github('walkerke/idbr') library(ggplot2) library(animation) library(dplyr) library(ggthemes) idb_api_key("Your Census API key goes here") male <- idb1('JA', 2010:2050, sex = 'male') %>% mutate(POP = POP * -1, SEX = 'Male') female <- idb1('JA', 2010:2050, sex = 'female') %>% mutate(SEX = 'Female') japan <- rbind(male, female) %>% mutate(abs_pop = abs(POP)) # Animate it with a for loop saveGIF({ for (i in 2010:2050) { title <- as.character(i) year_data <- filter(japan, time == i) g1 <- ggplot(year_data, aes(x = AGE, y = POP, fill = SEX, width = 1)) coord_fixed() coord_flip() annotate('text', x = 98, y = -800000, label = 'Data: US Census Bureau IDB; idbr R package', size = 3) geom_bar(data = subset(year_data, SEX == "Female"), stat = "identity") geom_bar(data = subset(year_data, SEX == "Male"), stat = "identity") scale_y_continuous(breaks = seq(-1000000, 1000000, 500000), labels = paste0(as.character(c(seq(1, 0, -0.5), c(0.5, 1))), "m"), limits = c(min(japan$POP), max(japan$POP))) theme_economist(base_size = 14) scale_fill_manual(values = c('#ff9896', '#d62728')) ggtitle(paste0('Population structure of Japan, ', title)) ylab('Population') xlab('Age') theme(legend.position = "bottom", legend.title = element_blank()) guides(fill = guide_legend(reverse = TRUE)) print(g1) } }, movie.name = 'japan_pyramid.gif', interval = 0.1, ani.width = 700, ani.height = 600)
想相识更多关于Kyle的措施包,请点击下面的Github常识库链接。