原创翻译 | 利用R用动图展示日本老龄化
当前位置:以往代写 > 其他教程 >原创翻译 | 利用R用动图展示日本老龄化
2019-06-14

原创翻译 | 利用R用动图展示日本老龄化

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

    关键字:

在线提交作业