其他
干货分享 | 使用stata的twoway系列命令绘制地图
点击上方蓝字关注我们,及时获取有用信息
twoway 系列命令绘制地图
在谈到用stata绘制地图时,很多人首先想到的是 spmap
命令。其实,最常见的twoway
系列命令就可以完成我们的大多数绘图需求。
对于spmap
命令的使用,在线资源已经有很多了,这主要介绍使用最常用的twoway
系列命令如何进行地图可视化。spmap
命令的使用只做简单介绍。(后台回复「20200412」获取相关数据)
shp2dta
命令将 shp 文件转为 stata 能够识别的 .dta 文件。shp2dta
语法格式如下: shp2dta using shpfilename, database(filename) coordinates(filename) [options]
options Description
-----------------------------------------------------------------------------------------------------------------------------------------
Main
database(filename) Specifies filename of new dBase dataset
coordinates(filename) Specifies filename of new coordinates dataset
replace Overwrites existing database and coordinates filenames
genid(newvarname) Creates unique id variable for database.dta
gencentroids(stub) Creates centroid variables
-----------------------------------------------------------------------------------------------------------------------------------------
database(filename)
用于将shp文件的属性表导出为 .dta 格式,名称为 filename;coordinates(filename)
则用于导出地理边界坐标点信息,是绘制底图所用的关键数据。gencentroids(stub)
用与生成中心点坐标值导出数据
cd E:/微信/stata地图可视化
* 导入面状文件
shp2dta using 14sheng_matchWGS.shp, database(data_shp) coor(coor0) genid(id) genc(centroid) replace
* 导入线状文件
shp2dta using 三级分界线WGS.shp, database(data_shp3) coor(coor3) genid(id) genc(centroid) replace
绘图
# 调用数据
use coor0, clear
rename _Y lan
rename _X lon
# 将面和线状文件的边界坐标数据进行合并
merge using coor3
drop _merge
merge using data_shp
# 绘制图形
twoway area lan lon, cmiss(n) col(gray) || scatter y_centroid x_centroid, mcolor(dark) msymbol("0") msize(vsmall) || line _Y _X, legend(off)
区域上色
# 导入属性表
use data_shp, clear
# 与我们的其他经济变量数据进行合并
merge 1:1 xian_code using data2008
rename id _ID
drop _merge
save shuxingbiao.dta, replace
# 代开地理边界数据
use coor0.dta, clear
# 与以及合并的属性表再次合并
merge m:1 _ID using shuxingbiao.dta
# 重命名变量,放置与后面所有合并的表冲突
rename _Y lan
rename _X lon
drop _merge
# 合并分界线的地理边界数据
merge using coor3
# 正式绘图
twoway area lan lon, cmiss(n) col(gray) || area lan lon if crank3 == 1, cmiss(n) col(khaki) || scatter y_centroid x_centroid, mcolor(dark) msymbol(circle_hollow) msize(vtiny) || line _Y _X, legend(off)
spmap 绘图
* 使用 shp2dta 转换数据格式
shp2dta using nycwrpczb_201601, database(nydb) coordinates(nycd) genid(id) genc(centroid) replace //行政边界 底图
shp2dta using nycwrpsnwa_201601, database(wadb) coordinates(wacd) genid(id) genc(centroid) replace //面状图
shp2dta using nycwrprec_201601, database(recdb) coordinates(reccd) genid(id) genc(centroid) replace //点图
* 地图绘制
use "reccd", clear
spmap using "nycd.dta", id(_ID) fcolor(purple) ocolor(gray) mosize(medium) osize(medium) ///
polygon(data("wacd.dta") fcolor(orange%40) legenda(on) leglabel(special areas)) ///
point(data("reccd.dta") x(_X) y(_Y) size(*1.2) fcolor(red) ocolor(black) osize(*0.5) ///
legenda(on) leglabel(event pints)) ///
title("Mapping with Stata", size(*0.8)) ///
legend(region(lcolor(gray%0) fcolor(white)) ///
title("Legend", size(*0.4) bexpand justification(center)) position (4))
spmap
只允许每种类型的子图叠加一次,希望后面有所改进。转载自微信公众号 计量工作室
经作者授权转载
文章仅代表作者观点,与本公众号无关,版权归原作者所有
原文标题:使用stata的twoway系列命令绘制地图
图文排版:申茜茜
责任编辑:张英浩
审核:王波涛
终审:顾伟男 田巍 梁龙武
猜你喜欢
扫描二维码,关注我们
都是成年人了,要记得告诉地小联你也“在看”哦~👇