根据国家统计局 2021 年 1 月 18 日发布的数据显示,2020年,我国国内生产总值(GDP)首次突破 100 万亿元大关!正好加上最新的数据,我今天给大家分享一份中国历年的 GDP 数据及各省的地区生产总值数据,这份数据比较容易获取,所以今天主要还是以分享整理代码和绘图程序为主。
为了不影响阅读,所有的代码均放置在文末。
中国历年 GDP、第一二三产业占比、人均 GDP
时间范围为 1952~2020 年,包含如下变量:
- 年份
- 地区生产总值_亿元
- 第一产业地区生产总值_亿元
- 第二产业地区生产总值_亿元
- 第三产业地区生产总值_亿元
- 第一产业占GDP比重_百分比
- 第二产业占GDP比重_百分比
- 第三产业占GDP比重_百分比
- 人均地区生产总值_元
首先我们来看一下 1952 ~ 2020 年中国历年的 GDP 和第一、二、三产业产值占 GDP 比重,1952~2019 年的数据来源于 CSMAR 经济金融数据库,2020 年的最新数据来源于国家统计局:
| 图一:1952~2020 年中国历年 GDP 增长和产业结构 |
 |
各省历年地区生产总值、第一二三产业占比、人均地区生产总值
时间范围为 1952 ~ 2019 年,包含如下变量:
- 年份
- 省代码
- 省份
- 地区生产总值_亿元
- 第一产业地区生产总值_亿元
- 第二产业地区生产总值_亿元
- 第三产业地区生产总值_亿元
- 第一产业占GDP比重_百分比
- 第二产业占GDP比重_百分比
- 第三产业占GDP比重_百分比
- 人均地区生产总值_元
2020 年各省的 GDP 还没有公布,所以仅分享给大家截止 2019 年的。展示各个省的 GDP 最好的办法就是绘制省级地图了:
| 图二:2019 年中国各省地区生产总值 |
 |
为了展示各省地区生产总值随时间的变化,我用 Stata 和 R 语言绘制了下面的动图:
×
绘图方法就是先绘制历年的静态图,然后再使用 R 语言组合成动图。
如果我们想展示三个产业的比重,可以用地图 + 饼图:
| 2019年中国各省地区生产总值和产业结构 |
 |
Stata 代码
图一是双 y 轴图,绘制代码如下:
use 中国历年GDP, clear gen line2 = 第一产业占GDP比重_百分比 + 第二产业占GDP比重_百分比 gen line3 = 100 replace 地区生产总值 = 地区生产总值 / 10000 replace 人均地区生产总值_元 = 人均地区生产总值_元 / 1000 tw area 第一产业占GDP比重_百分比 年份, yaxis(1) color("102 194 165"%10) || rarea line2 第一产业占GDP比重_百分比 年份, yaxis(1) color("252 141 98"%10) || rarea line3 line2 年份, yaxis(1) color("141 160 203"%10) || line 人均地区生产总值_元 年份, yaxis(2) lp(solid) lw(*2) lc("229 196 148") || line 地区生产总值 年份, yaxis(1) lp(solid) lw(*2) leg(order(4 "GDP(万亿元)" 5 "人均GDP(千元)" 1 "第一产业占GDP比重(%)" 2 "第二产业占GDP比重(%)" 3 "第三产业占GDP比重(%)") pos(6) row(2)) xti("") yti("GDP(万亿) / 占 GDP 的比重(%)", axis(1)) yti("人均GDP(千元)", axis(2) color("229 196 148")) yla(, labcolor("229 196 148") axis(2)) xla(1952(10)2012 2020) ysc(lcolor("229 196 148") axis(2)) ytick(, tlcolor("229 196 148") axis(2)) ti("1952~2020 年中国历年 GDP 增长和产业结构",size(*1.1)) subti("数据来源:CSMAR经济金融数据库、新华社", size(*0.9)) note("绘制:微信公众号 RStata", size(*0.8))
gr export "1952~2020 年中国历年 GDP 增长和产业结构.png", replace width(1200) gr export "1952~2020 年中国历年 GDP 增长和产业结构.pdf", replace
|
图二是地图,除了各省的 GDP 外,我们还需要地图数据:
use 各省历年GDP, clear drop if 省份 == "中国" replace 地区生产总值_亿元 = 地区生产总值_亿元 / 1000 merge m:1 省代码 using china_prov_db.dta replace 地区生产总值_亿元 = -1 if missing(年份) grmap 地区生产总值_亿元 if 年份 == 2019 | missing(年份) using china_prov_coord, id(ID) clmethod(custom) clbreaks(-1 0 10 20 30 40 60 80 100 120) fcolor("gray" "247 252 245" "229 245 224" "199 233 192" "161 217 155" "116 196 118" "65 171 93" "35 139 69" "0 90 50") ocolor("gray" ...) ti("2019 年中国各省地区生产总值", size(*1.1)) subtitle("数据来源:CSMAR经济金融数据库") graphr(margin(medium)) osize(vvthin ...) legend(size(*1.1) order(2 "无数据" 3 "< 10千亿" 4 "10~20千亿" 5 "20~30千亿" 6 "30~40千亿" 7 "60~80千亿" 8 "80~100千亿" 9 "> 100千亿") ti(地区生产总值(千亿), size(*0.5) pos(11))) xsize(18) ysize(12.5) caption("绘制:微信公众号 RStata", size(*0.8)) line(data(china_city_line_coord.dta) size(*0.5 ...) color(black) select(keep if _ID <= 6)) label(data(china_prov_label.dta) x(X) y(Y) l(name) size(*0.8)) xsize(13) ysize(10) polygon(data(polygon) by(value) fcolor(black) osize(vvthin))
gr export "2019年中国各省GDP.pdf", replace gr export "2019年中国各省GDP.png", replace width(1200)
|
为了绘制动态图,我们可以先在工作目录下面新建一个 prov_gdp 文件夹,然后循环绘制每年的地图保存在这个文件夹里面,由于 2000 年之前经济增长缓慢,所以仅仅绘制 2000 年之后的:
use 各省历年GDP, clear drop if 省份 == "中国" replace 地区生产总值_亿元 = 地区生产总值_亿元 / 1000 merge m:1 省代码 using china_prov_db.dta replace 地区生产总值_亿元 = -1 if missing(年份) forval i = 2000 / 2019{ grmap 地区生产总值_亿元 if 年份 == `i' | missing(年份) using china_prov_coord, id(ID) clmethod(custom) clbreaks(-1 0 10 20 30 40 60 80 100 120) fcolor("gray" "247 252 245" "229 245 224" "199 233 192" "161 217 155" "116 196 118" "65 171 93" "35 139 69" "0 90 50") ocolor("gray" ...) ti("`i' 年中国各省地区生产总值", size(*1.1)) subtitle("数据来源:CSMAR经济金融数据库") graphr(margin(medium)) osize(vvthin ...) legend(size(*1.1) order(2 "无数据" 3 "< 10千亿" 4 "10~20千亿" 5 "20~30千亿" 6 "30~40千亿" 7 "60~80千亿" 8 "80~100千亿" 9 "> 100千亿") ti(地区生产总值(千亿), size(*0.5) pos(11))) xsize(18) ysize(12.5) caption("绘制:微信公众号 RStata", size(*0.8)) line(data(china_city_line_coord.dta) size(*0.5 ...) color(black) select(keep if _ID <= 6)) label(data(china_prov_label.dta) x(X) y(Y) l(name) size(*0.8)) xsize(13) ysize(10) polygon(data(polygon) by(value) fcolor(black) osize(vvthin))
gr export "prov_gdp/`i'年中国各省GDP.png", replace width(1200) }
|
然后使用下面的 R 语言代码就能合并这些静态图生成一个 mp4 动图文件了。
在地图上添加饼图需要预先准备好饼图所需的数据:
use china_prov_label.dta, clear gen 省 = substr(name, 1, 6) save china_prov_label2.dta, replace
use 各省历年GDP, clear drop if 省份 == "中国" merge m:1 省代码 using china_prov_db.dta keep if 年份 == 2019 replace 省 = substr(省, 1, 6) drop _m merge 1:1 省 using "china_prov_label2.dta" drop _m keep 省份 第一产业占GDP比重_百分比 第二产业占GDP比重_百分比 第三产业占GDP比重_百分比 X Y drop if missing(省份) save piedata, replace
|
然后再绘制地图:
use 各省历年GDP, clear drop if 省份 == "中国" replace 地区生产总值_亿元 = 地区生产总值_亿元 / 1000 merge m:1 省代码 using china_prov_db.dta replace 地区生产总值_亿元 = -1 if missing(年份) grmap 地区生产总值_亿元 if 年份 == 2019 | missing(年份) using china_prov_coord, id(ID) clmethod(custom) clbreaks(-1 0 40 60 80 100 120) fcolor("gray" "237 248 233" "199 233 192" "161 217 155" "116 196 118" "49 163 84") ocolor("gray" ...) ti("2019 年中国各省地区生产总值", size(*1.1)) subtitle("数据来源:CSMAR经济金融数据库") graphr(margin(medium)) osize(vvthin ...) legend(size(*1.1) order(2 "无数据" 3 "< 40千亿" 4 "40~60千亿" 5 "60~80千亿" 6 "80~100千亿" 7 "> 100千亿" 10 "第一产业" 11 "第二产业" 12 "第三产业")) xsize(18) ysize(12.5) caption("绘制:微信公众号 RStata", size(*0.8)) line(data(china_city_line_coord.dta) size(*0.5 ...) color(black) select(keep if _ID <= 6)) label(data(china_prov_label.dta) x(X) y(Y) l(name) size(*0.8)) xsize(13) ysize(10) polygon(data(polygon) by(value) fcolor(black) osize(vvthin)) diagram(data(piedata) x(X) y(Y) v(第一产业占GDP比重_百分比 第二产业占GDP比重_百分比 第三产业占GDP比重_百分比) type(frect) legenda(on) os(vvthin) size(1.5) fc("102 194 165" "252 141 98" "229 196 148") oc("102 194 165" "252 141 98" "229 196 148"))
gr export "2019年中国各省地区生产总值.pdf", replace gr export "2019年中国各省地区生产总值.png", replace width(1200)
|
| 2019年中国各省地区生产总值 |
 |
点击这里跳转到 RStata 短书平台获取附件:1952~2020 年全国 GDP 和各省地区生产总值数据& Stata 绘图方法介绍
评论