以下内容均是自我学习总结感悟,希望把自己学习到的东西能总结起来,以后也方便有需要的时候查阅。如果有更好的建议,欢迎互相讨论哈。
今天因为论文需要,所以就学习了一下怎么用stata画中国地图,并且在地图上添加各省的名字。
主要参考以下几个文档,以及stata自带的help文档。
https://bbs.pinggu.org/thread-3786220-1-1.html
https://www.statalist.org/forums/forum/general-stata-discussion/general/1395567-how-to-add-state-names-and-labels-using-spmap
我先是看了这个人大经济论坛这个文档的建议,并且复制了code,但是提示 “spmap option la() not allowed”。 后来查了以下,发现是新的stata15不支持原来的spmap了,现在要使用grmap 了。
https://www.statalist.org/forums/forum/general-stata-discussion/general/1431518-spmap-option-la-not-allowed。
其中发现了有几个问题,写出来以便以后再犯。首先,因为我需要地图显示各个省份的英文名字,所以我需要对英文名字进行更改。此处参考人大经济论坛的帖子里对于中文名字部分的更改。
1. use china_label,clear
tab name
replace ename = subinstr(ename, "Sheng", "", .)
replace ename = subinstr(ename, "Shi", "", .)
replace ename = subinstr(ename, "Zizhiqu", "", .)
replace ename = subinstr(ename, "Huizu", "", .)
replace ename = subinstr(ename, "Zhuangzu", "", .)
replace ename = subinstr(ename, "Tebiexingzhengqu", "", .)
replace ename = subinstr(ename, "Uygur", "", .)
replace ename = subinstr(ename, "Nei Mongol", "Inner Mongolia", .)
replace ename = subinstr(ename, "Xiangkong", "Hongkong", .)
replace ename = subinstr(ename, "Xizang", "Tibet", .)
tab name
gen x = uniform()
format x %9.3g
2. grmap x using "china_map.dta", id(id) ///
label(label(ename) ///
xcoord(x_coord) ycoord(y_coord) size(*.9)) ///
plotregion(icolor(stone)) graphregion(icolor(stone)) ///
clnumber(8) fc(Greens2) oc(white ..) osize(medthin ..)
其他的code可以直接套用,但是需要换成grmap,才可以不报错的跑出来一个地图。同时label 一定要和xcoord and y coord同时一起使用才行。我先是用了之前的一个map code with grmap, 因为没有label,想要加上label的时候发现是必须要同时加上前面提到的两项才行的。
https://bbs.pinggu.org/thread-3502851-1-1.html
http://www.360doc.com/content/17/0312/18/719224_636252635.shtml
上面👆帖子里有提到如何做县级层面的地图。
https://www.zachrutledge.com/uploads/1/2/5/6/125679559/stata_gis_guide_v2.pdf
这个帖子里有详细的英文介绍,是拿加州做的示范。
另外,此前,我还用到了另一个版本的code,是replicate一个中国学者的文章时,看到他们写的code。这里面好像没有xcoord 以及ycoord.
use "XXXXXXXXX/china_prov.dta",clear
*use "$path1\china_prov.dta",clear
gen prov = ADCODE93/10000
keep prov _ID NAME
merge m:1 prov using temp1
grmap finalyear using "XXXXXXXXX x/china_prov_co.dta", id(_ID) ///
fcolor(YlGnBu) ocolor(black) clmethod(unique) ysize(3.2) xsize(4.4)
graph export "XXXXXXXX/Data/Figure2.png",replace width(1320)
后续需要学习的
1. 不过目前我需要在部分的省份加上斜杠,还没有找到对应的code应该怎么写呢。好像没有看到stata做的图可以在部分省份加斜杠。
2。 另外就是需要找到区县的code,然后做区县对应的分析。
_______update
https://www.statalist.org/forums/forum/general-stata-discussion/general/1447786-spmap-create-rectangles-to-show-labels-and-colors-for-small-jurisdictions-in-choropleth-maps
上面的帖子有介绍说很小的不能显示的省份该如何显示