数据地图系列6|Stata数据地图(下)

今天要跟大家分享的是数据地图系列6——Stata数据地图(下)

接着前一篇的节凑,这一篇会给大家介绍比较全面的Stata热力地图代码实现。

版本仍然是基于StataSE12.0。

首先需要下载软件外部命令:spmap #这一条命令是数据地图的专用命令。

ssc install spmap #下载并安装spmap命令。

下载数据地图经纬度数据文件:就是昨天用到的那个

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

接下来是作图步骤:

1、锁定数据地图数据文件目录:

cd d:\chinamap\ #锁定数据文件目录

2、打开中国地图数据文件(标签版)

use china_label,clear

通过浏览数据文件信息我们发现,有些代码(省份)竟然出现重复值,这个其实也不奇怪,因为我国有些省份(特别是东南沿海)有好多海岛,这些海岛彼此并不相连,因而才会出现这种情况,给我们之后的数据组织带来诸多不便,不过没关系,这些问题小魔方都已经解决了。

我们先通过随机数函数生成一列正态随机数,作为我们要填充颜色的数据指标。

3、gen x=uniform() #生成一组正太随机数

4、设置变量数据格式

format x %9.3g #设置新变量X的整数与小数部分长度。

5、绘制地图

spmap x using "china_map.dta", id(id) #基本图形:配色默认黑灰色

在不指定填充颜色的情况下,软件会使用默认的一组灰色填充不同省份。

spmap x using "china_map.dta", id(id) fcolor(Reds)

#这句语法会使用一组不同色调的红色填充整个地图

关于填充颜色的问题,我曾经尝试了将近一个小时,挑了几套还不错的配色,这里把配色列表分享给大家。

Reds,Reds2,Greens, Greens2,Blues,Blues2,Oranges (自动分配深浅的颜色)

以上颜色替换fcolor()内的内容,就可以实现同色系填充,而且自动分配颜色深浅,效果很棒。

以下是用Greens\Blues\Granges颜色填充的效果。

spmap x using "china_map.dta", id(id) fcolor(Greens)

spmap x using "china_map.dta", id(id) fcolor(Blues)

spmap x using "china_map.dta", id(id) fcolor(Oranges)

当然上面是使用系统生成数据所做的,我们实际需要,肯定是要用自己的业务数据去做。

怎么把自己的数据与作图数据文件合并呢……

由于使用语法合并比较繁琐,容易出错,这里小魔方使用了一种比较迂回的方式,不过这样数据修改起来比较方便。

首先打开China_label数据文件后,将其数据全部复制——黏贴到新建的excel工作薄中,取名data_map。

同时将data_map中的B列(省份名称列)单独复制一份,粘贴在新建的数据指标工作薄中。(注意是新建工作薄(单独的excel文件)不是新建工作表)。

在data_map表的最右侧添加一个变量scale,使用vlookup函数从数据指标工作表表中将数据引用到data_map文件的scale列中。(相同省份(编号)数据相同)。

=VLOOKUP(B2,[指标数据.xlsx]Sheet1!$A$2:$B$35,2,FALSE)

为什么要这么大费周章呢,因为data_map表中有很多省份名称是重复的(原因已经介绍过了)。如果是在data_map表中直接输入业务数据,对于那些重复的省份,你需要重复输入很多次。

那为啥要把指标数据单独新建文件,然后使用vlookup函数引用。而不是直接在data_map工作薄中直接输入指标数据,然后引用到scale列中呢……

因为一会儿我要把data_map表另存为.CSV格式(excel数据导入Stata太复杂了),如果把指标数据也存放在data_map表中,最后的.csv文件导入会带有很多无效数据,影响数据组织。

完成之后,将data_map数据表另存为——.CSV格式。

下面就开始导入我们自己的业务数据:

cd d:\chinamap\ #锁定目录

insheet using data_map.csv,clear //读入全部变量

format x %9.3g #设置格式

spmap scale using "china_map.dta", id(id) fcolor(Reds) #作图

下次如果有新的业务指标数据的时候,可以直接复制到指标数据文件中,使用vlookup函数引用到data_map的scale变量里。

除了数据组织的过程之外,其他的过程都是跟之前的一样的。当然,如果你觉得我在excel中使用的数据组织技巧太复杂的话,也可以将指标数据直接复制到stata的China_label变量栏里,不过这样很容易出现乱码,而且还需要手动设置格式。

以上的作图语法,如果你把参数和路径都修改的跟你数据文件名、路径完全对应的话,完全没有必要一步一步的跑代码。全部复制黏贴回车,一下子地图就秒出了。你也可以把这段代码保存为命令格式(.do)以待今后使用。

当然这些技巧并非是我要讲解的重点,我只负责数据地图作图技巧,不负责软件使用和代码基础哈~

原文发布于微信公众号 - 数据小魔方(datamofang)

原文发表时间:2016-06-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玉树芝兰

如何用Python做中文分词?

打算绘制中文词云图?那你得先学会如何做中文文本分词。跟着我们的教程,一步步用Python来动手实践吧。

22330
来自专栏coding

听说,撸代码,ide与vim更配哦vim折腾记vim常用命令

在选择编辑器上面,我是一个纠结的人,曾经年少的我执着地追求一款万能的编辑器,可以支持所有编辑语言,灵活可定制,可纯粹用键盘操作。符合这种条件的编辑器,非vim莫...

11020
来自专栏DeveWork

【译】WordPress 中的50个过滤器(4):第21-30个过滤器

本文为系列第四篇,原文:50 Filters of WordPress: Filters 21-30 原文地址 在过去的两篇文章中,我们总共介绍了20个Word...

19990
来自专栏FreeBuf

跟我学姿势:极客教你如何科学的看电影

俗话说自己动手丰衣足食,小米盒子之类的弱爆了,极客看片自然有极客的做法!相信看完本篇狠涨姿势的文章,你就可以像我一样吃着火锅唱着歌,喝着饮料吃着爆米花,用树莓派...

27550
来自专栏编程

用在线RaxML构建系统发育树

本文将以在线的RAxML为例进行讲解: 测试数据及结果和相关处理软件已经上传至百度网盘:http://pan.baidu.com/s/1i5cPyXB密码:b2...

36270
来自专栏中国Android研究院

番外篇-Flutter初识三问

在Android中,您可以通过直接对view进行改变来更新视图。然而,在Flutter中Widget是不可变的,不会直接更新,而必须使用Widget的状态。

13930
来自专栏数据小魔方

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

今天要跟大家分享的是使用Stata语法制作数据地图! Stata语法制作数据地图,需要具备一点儿Stata语法基础,但是基于我们的目的是介绍地图的实现方式而非介...

48340
来自专栏我有一个梦想

游戏开发之UE4添加角色到场景中

接着上次继续学习,现在我们已经有了一个场景并且运行了,我们需要添加一个角色到场景中。要这样做,我们必须从UE4的GameFramework类继承它。 一. 创建...

38850
来自专栏鸿的学习笔记

两种主要列存储方式的区别

Bigtable,HBase,Hypertable和Cassandra都被称为列存储,因为它们能够单独存储和访问列族。 这使它们看起来与列存储(如Sybase ...

12310
来自专栏北京马哥教育

LaTeXila:Linux 的多语言 LaTeX 编辑器简介

豌豆贴心提醒,本文阅读时间7分钟 LaTeXila 是一个多语言 LaTeX 编辑器,专为那些偏爱 GTK+ 外观的 Linux 用户设计。这个软件除了操作简...

36590

扫码关注云+社区

领取腾讯云代金券