原创翻译 | 利用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常识库链接。