使用 Stata 绘图展示各省市区县数字普惠金融指数

今天给大家分享使用 Stata 绘图展示各省市区县数字普惠金融指数的方法。

该数据的省级和城市级指数时间跨度为 2011-2023 年,县域指数时间跨度为 2014-2023 年。本课程将以 2023 年数据为例进行演示。

地图绘制细节较多,感兴趣的小伙伴可以学习之前的课程:

使用 Stata 绘制历年中国市级行政区划(小地图版本 + 长版):https://rstata.duanshu.com/#/brief/course/0e9d78633ae64fefa684d6aad89633bc

各省份数字化程度

读取和截取数据:

import excel using "北大数字普惠金融指数2011-2023.xlsx", clear first sheet(省级)
keep if year == 2023
ren prov_name 省
merge m:1 省 using chinaprov2021mini_db.dta
keep if _m == 3
drop _m

nicecut.ado 是我编写的一个用于数据切分的小命令,把文件放在附件中即可使用。

nicecut 数字化程度一级指标, n(8) unit(" ") format(%6.0f)

*- 缺失值替换成 -1000
replace 数字化程度一级指标 = -1000 if mi(数字化程度一级指标)
grmap 数字化程度一级指标 using chinaprov2021mini_coord.dta, ///
id(ID) osize(vvthin ...) ocolor(white ...) ///
clmethod(custom) clbreaks(`r(cutpoints)') ///
fcolor(gray "251 233 231" "255 204 188" "255 171 145" ///
"255 138 101" "255 112 67" "255 87 34" ///
"244 81 30" "230 74 25") ///
graphr(margin(medium)) ///
leg(order(`r(legorder)')) ///
line(data(chinaprov2021mini_line_coord2.dta) ///
by(group) size(vvthin *1 *0.5 *0.5 *0.5) pattern(solid ...) ///
select(drop if inlist(group, 4, 7)) ///
color(white /// 省界颜色
black /// 国界线颜色
"0 85 170" /// 海岸线颜色
black /// 小地图框格颜色
black /// 比例尺和指北针颜色
)) ///
polygon(data(polygon2) fcolor(black) ///
osize(vvthin)) ///
label(data(chinaprov2021mini_label2) x(X) y(Y) ///
label(cname) length(20) size(*0.7)) ///
ti("2023年各省份数字化程度") ///
subti("数据整理 & 绘制:微信公众号 RStata") ///
caption("数据来源:郭峰、王靖一、王芳、孔涛、张勋、程志云,《测度中国数字普惠金融发展: 指数编制与空间" "特征》,《经济学季刊》,2020年第19卷第4期,第1401-1418页。", size(*0.8))

gr export "2023年各省份数字化程度.png", replace width(4800)

其中颜色的选择可以使用我的小工具:https://tidyfriday.cn/colors/

各城市数字金融普惠指数

城市地图的绘制方法类似:

clear all
import excel using "北大数字普惠金融指数2011-2023.xlsx", clear sheet(地级市) first
ren id2018 市代码
keep if year == 2023
merge 1:1 市代码 using chinacity2021mini_db.dta
keep if _m == 3
drop _m

* 绘制 总指数
nicecut 总指数, n(8) unit(" ") format("%6.0f")
replace 总指数 = -1000 if mi(总指数)
grmap 总指数 using chinacity2021mini_coord.dta, ///
id(ID) osize(vvthin ...) ocolor(white ...) ///
clmethod(custom) clbreaks(`r(cutpoints)') ///
fcolor(gray "251 233 231" "255 204 188" "255 171 145" ///
"255 138 101" "255 112 67" "255 87 34" "244 81 30" "230 74 25") ///
graphr(margin(medium)) ///
leg(order(`r(legorder)')) ///
line(data(chinaprov2021mini_line_coord2.dta) by(group) ///
size(vvthin *1 *0.5 *0.5 *0.5) pattern(solid ...) ///
select(drop if inlist(group, 4, 7)) ///
color(gs20 /// 省界颜色
black /// 国界线颜色
"0 85 170" /// 海岸线颜色
black /// 小地图框格颜色
black /// 比例尺和指北针颜色
)) ///
polygon(data(polygon2) fcolor(black) ///
osize(vvthin)) ///
label(data(chinacity2021mini_label2) x(X) y(Y) label(cname) length(20) size(*0.8)) ///
ti("2023年各城市数字金融普惠指数") ///
subti("数据整理 & 绘制:微信公众号 RStata") ///
caption("数据来源:郭峰、王靖一、王芳、孔涛、张勋、程志云,《测度中国数字普惠金融发展: 指数编制与空间" "特征》,《经济学季刊》,2020年第19卷第4期,第1401-1418页。", size(*0.8))

gr export "2023年各城市数字金融普惠指数.png", replace width(4800)

2023年各区县数字金融普惠覆盖广度

区县层面的不太好匹配,因为数据里面提供的区划代码是 2014 年的,而我这里提供的区划代码是 2021 年的(平台上也有 2014 年的地图数据)。不过针对这种匹配,可以考虑使用 reclink 进行模糊匹配,感觉效果还不错,然后剩下的实在匹配不上的可以再考虑逐个手动调整,不过这里我就不一一调整了:

import excel using "北大数字普惠金融指数2011-2023.xlsx", clear first sheet(区县)
keep if year == 2023

gen 县 = county_name_year14
gen 省 = prov_name
gen mid = _n

reclink 省 县 using chinacounty2021mini_db.dta, gen(score) idm(mid) idusing(ID) minscore(0.6)

order prov_name county_name_year14 U县 score
drop if mi(ID)

gsort ID -score
bysort ID: keep if _n == 1

keep ID 覆盖广度一级指标
merge m:1 ID using chinacounty2021mini_db.dta

nicecut 覆盖广度一级指标, n(8) unit(" ") format(%6.0f)
replace 覆盖广度一级指标 = -1000 if mi(覆盖广度一级指标)

grmap 覆盖广度一级指标 using chinacounty2021mini_coord.dta, ///
id(ID) osize(vvthin ...) ocolor(white ...) ///
clmethod(custom) clbreaks(`r(cutpoints)') ///
fcolor(gray "251 233 231" "255 204 188" "255 171 145" ///
"255 138 101" "255 112 67" "255 87 34" "244 81 30" "230 74 25") ///
graphr(margin(medium)) ///
leg(order(`r(legorder)')) ///
line(data(chinaprov2021mini_line_coord2.dta) by(group) ///
size(vvthin *1 *0.5 *0.5 *0.5) pattern(solid ...) ///
select(drop if inlist(group, 4, 7)) ///
color(gs20 /// 省界颜色
black /// 国界线颜色
"0 85 170" /// 海岸线颜色
black /// 小地图框格颜色
black /// 比例尺和指北针颜色
)) ///
polygon(data(polygon2) fcolor(black) ///
osize(vvthin)) ///
label(data(chinacounty2021mini_label2) x(X) y(Y) label(cname) length(20) size(*0.8)) ///
ti("2023年各区县数字金融普惠覆盖广度") ///
subti("数据整理 & 绘制:微信公众号 RStata") ///
caption("数据来源:郭峰、王靖一、王芳、孔涛、张勋、程志云,《测度中国数字普惠金融发展: 指数编制与空间" "特征》,《经济学季刊》,2020年第19卷第4期,第1401-1418页。", size(*0.8))

gr export "2023年各区县数字金融普惠覆盖广度.png", replace width(4800)

关于模糊匹配,感兴趣的小伙伴也可以学习这个课程:

历年各省份数字普惠金融指数

如果想要绘制历年各省份数字普惠金融指数的变化趋势,可以考虑使用线图。不过如果绘制所有省份,整个图会显得非常杂乱,可以考虑强调较为关心的几个省市:

import excel using "北大数字普惠金融指数2011-2023.xlsx", clear first sheet(省级)
ren year 年份
local cmd = "tw"
levelsof prov_name, local(prov)
foreach i in `prov' {
local cmd = `"`cmd' (line 总指数 年份 if prov_name == "`i'", lc(gray%60) lw(*0.3))"'
}
`cmd' ///
(line 总指数 年份 if prov_name == "北京市", sort lc("251 207 53") lw(*1.2)) ///
(line 总指数 年份 if prov_name == "河南省", sort lc("237 76 28") lw(*1.2)) ///
(line 总指数 年份 if prov_name == "澳门特别行政区", sort lc("156 126 112") lw(*1.2)) ///
(line 总指数 年份 if prov_name == "安徽省", sort lc("90 194 241") lw(*1.2)) ///
(line 总指数 年份 if prov_name == "香港特别行政区", sort lc("17 119 108") lw(*1.2)), ///
leg(order(33 "河南" 34 "澳门" 35 "安徽" 32 "北京" 36 "香港") ///
pos(11) row(2) ring(0)) ///
xti("") yti("数字普惠金融指数") ///
ti("历年各省份数字普惠金融指数") ///
xla(2011(1)2023) yla(,format(%6.0f)) ///
caption("数据来源:郭峰、王靖一、王芳、孔涛、张勋、程志云,《测度中国数字普惠金融发展: 指数编制与空间" "特征》,《经济学季刊》,2020年第19卷第4期,第1401-1418页。")

gr export "历年各省份数字普惠金融指数.png", replace width(4800)

关于这种绘图技术,感兴趣的小伙伴也可以学习这个课程:

Stata 绘图中循环的使用、xtline 用法深入解析以及填充地图的绘制——以新冠疫情数据分析为例:https://rstata.duanshu.com/#/brief/course/7a125cbf4ccb4cccbb1495bcbfd107c3

点击这里跳转到 RStata 短书平台获取附件:使用 Stata 绘图展示各省市区县数字普惠金融指数

评论