查看原文
其他

数据地图系列5——Stata版(上)

2016-06-17 小魔方 数据小魔方

今天要跟大家分享的是使用Stata语法制作数据地图


Stata语法制作数据地图,需要具备一点儿Stata语法基础,但是基于我们的目的是介绍地图的实现方式而非介绍软件操作,这里不再详细介绍Stata软件基础,感兴趣的同学可以自己查阅Stata工具书。


具体步骤会出现诸多代码,但是别担心,代码都不难理解,都是经过小魔方简化过的,复杂的引用及调用过程会通过手动操作提示。


步骤:(基于StataSE12.0)


在正式步骤之前需要从网上下载地图经纬度数据:


http://fmwww.bc.edu/RePEc/bocode/c/china_map.zip 


将下载后的名为china_map.zip压缩文件解压后存放在你的Stata安装目录中。(其实放在哪里无所谓,只要记住位置就行,一会代码需要引用位置,我的是放在D:/stata12/下)。


1、锁定引用目录位置:


cd "D:\chinamap"   /*这样,你之后的引用都不用添加应用路径,可以省好多功夫*/


2、打开地图数据文件


use china_map,clear    /*打开锁定文件目录下的数据文件*/




如果你想查看一下该文件的数据信息,可以使用list命令查看前n个记录信息。


list in 1/5   /*查看前五个记录*/





3、可以直接用数据作图了:(scatter语法)

 

scatter _Y _X      /*先做一个最简单的中国地图轮廓,可能比较粗糙,因为没有控制参数格式*/




从图形上来看,确实挺粗糙的,那是因为我们没有使用参数控制散点的类型、大小、颜色。


下面我们要给这个命令施加关于颜色、类型、大小的参数。


scatter _Y _X , msize( vtiny ) msymbol(dot)  color(red)  #施加散点面积、类型、颜色后的地图。




下面我们开始介绍分省地图的绘制。


在我们下载的地图数据文件中,_ID中对应的序号编码是与中国34个升级行政单位一一对应的。


具体对应表在China_map文件夹的另一个文件China_label文件中,你可以打开查看编号与省份名称的对照表(下载打开就可以看到)。


scatter _Y _X if _ID==1, msize(tiny) msymbol(dot)  color(green)  #黑龙江地区轮廓




大家可以看出来编号1代表的是黑龙江。


scatter _Y _X if _ID==1, msize(tiny) msymbol(dot)  recast(area) #黑龙江填充地图




以上命令与上一条的区别在于仅仅填充区域,因为没有添加参数,所以使用了系统默认的灰蓝色。


scatter _Y _X if _ID==1, msize(vtiny) msymbol(dot) recast(area) color(green)  #指定填充颜色的填充区域。




当然有时候,我们需要同时对比好几个省份,那么使用Stata代码如何实现呢?其实很简单,使用||链接以上单条代码就可以了。参数可以自己设定。


假若我想画出来东三省的图形(东三省的代码:黑1,吉4,辽5)


scatter _Y _X if _ID==1, msize(vsmall) msymbol(dot) color(green) recast(area) || scatter _Y _X if _ID==4, msize(vsmall) msymbol(dot) color(gold) recast(area) || scatter _Y _X if _ID==5, msize(vsmall) msymbol(dot) color(blue) recast(area) 




以上代码可以实现东三省的分省填充地图。


但是问题来了,如果我想做出来全国各省的分省填充地图,那么真的要复制34遍语法,并调整参数吗……


其实如果你不嫌烦,可是尝试一下,结果应该可以跑出来,但是……


对于小魔方这种懒人来说,肯定不会这么干,其实是有捷径的,不过我们数据处理和语法上会稍微复杂一点儿,今天算是让大家熟悉一下所用到的数据文件,下一篇正式介绍正宗的热力数据地图做法~


关于上述命令语句中的参数设置:


msize(vsmall) msymbol(dot) color(green)


以上参数分别代表散点面积(大小)、类型(形状)、颜色。


具体的参数对照表请参考阅读原文里的相关说明。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存