人口金字塔是进行人口数据可视化时常用的一种统计图形,可以形象地描述人口年龄和性别的分布情况。最近工作上经常处理人口数据,于是试着使用ggplot2绘制了一下。在这里记录一下,顺便也熟悉一下ggplot2的用法。
上图所示的人口金字塔是根据我国2010年人口普查的相关数据进行绘制的,绘制过程主要分为以下三部分,(1)数据爬取,(2)分面设置以及(3)图形绘制。
1、数据爬取
如下图所示,人口普查的相关数据可以从统计局网站上找到。
由于网站是frame结构构建的动态网页,我们这里使用RSelenium包进行了爬取。这里值得注意的是,frame的切换需要逐层进行,我们这里使用switchToFrame、goBack和goForward函数实现了不同frame之间的切换。其中使用RSelenium包进行爬虫需安装java和Selenium,可参考R语言爬取动态网页:使用RSelenium包和Rwebdriver包的前期准备。
爬虫相关程序如下:
library(RSelenium)
library(rvest)
## 打开浏览器
remDr <- remoteDriver(browserName ="chrome")
remDr$open()
## 打开网页
url <- 'http://www.stats.gov.cn/tjsj/pcsj/rkpc/6rp/indexch.htm'
remDr$navigate(url)
## 切换frame链接到数据页面
remDr$switchToFrame(1)
xpath <- '//tbody/tr[3]/th/ul/ul[1]/ul[3]/li[1]/a'
nextBtn <- remDr$