Stata:地图绘制命令介绍-maptile

发布时间:2022-04-16 阅读 2944

Stata连享会   主页 || 视频 || 推文 || 知乎 || Bilibili 站

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc, ihelp, rdbalance, gitee, installpkg

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者:肖蕊 (上海交通大学)
邮箱1327536202@qq.com


目录


maptile 命令能够依据特定变量数值的大小将地图上各个区域填充为不同颜色,并生成分级统计图 (Choropleth Map)。maptile 命令的使用需预先安装 spmap 命令,这个命令为使用 spmap 命令提供了方便。

正如帮助文件所述,spmap 命令让用户能够控制几乎所有地图元素的格式,进而可以生成高度切合自身需求的地图。在使用 maptile 命令时,由于多数的自定义设置都储存在地理模板中,调用该命令绘制地图的语法非常简单。

1. 命令安装

  • ounter(line
  • ounter(line
ssc install maptile, replace ssc install spmap, replace 

maptile 命令安装完毕后,可以运行 help maptile 命令来查阅帮助文档。接下来,我们跟随作者 Michael Stepner 给出的「示例」来了解一下这个命令的各种功能。其中,相关数据和命令可通过压缩文件「maptile slides 2015-03 _creation.zip」获取。

2. 案例说明

2.1 美国人口数据绘制

在绘制地图前,我们需要先安装可能用到的地图模板,详见「geography templates」。在安装地图模板时要注意对应的地理 ID 变量名称。为了展示作者提供的案例,我们先安装美国和加拿大的地图模板。

  • ounter(line
  • ounter(line
. maptile_install using "http://files.michaelstepner.com/geo_state.zip". maptile_install using "http://files.michaelstepner.com/geo_can_prov.zip"

接着导入美国数据,并对变量名称和数值大小进行处理。

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
. sysuse census, clear. rename (state state2) (statename state). * 将单位转化成百万. replace pop=pop/10^6. label var pop "Population, in millions". rename pop population. order state population. keep state population

得到的数据示例如下:

输入命令 maptile population, geo(state),即可得到如下结果:

2.2 地图模板的配合使用

为了生成某个特定的地图,maptile 命令需要使用选项 geography 指示地图的模板。如果没有你想要绘制地区的地理信息,那么你可以创建一个。现在我们使用美国的死亡率数据 mortality_by_state_race.txt,并按照作者提供的如下命令进行预处理。

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
. lxhget mortality_by_state_race.txt, replace. import delimited using mortality_by_state_race.txt, clear. drop if state=="District of Columbia" . gen black=(race=="Black or African American"). rename ageadjustedrate mort. keep state statecode black mort. reshape wide mort, i(state) j(black). rename mort0 mort_white. rename mort1 mort_black. order statecode state mort_white mort_black. label var statecode "State FIPS code". label var state "State name". label var mort_white "White age-adjusted mortality: per 100,000". label var mort_black "Black age-adjusted mortality: per 100,000"

如果我们想要绘制美国 state 层面的数据,那么可以输入命令 maptile_geohelp state 查看对地理编码变量的需求。

按照上述 Geographic ID variables 部分的要求,对原始数据文件的名称进行修改。

  • ounter(line
  • ounter(line
. rename statecode statefips. rename state statename

与文件 state_database_clean.dta 匹配以增加变量 state,然后使用命令 maptile 绘图。

  • ounter(line
  • ounter(line
  • ounter(line
. lxhget state_database_clean.dta, replace. merge 1:1 statefips using state_database_clean, keep(match) nogen. maptile mort_white, geo(state) legd(0)

2.3 maptile 命令的着色方式

我们先使用命令语句 fastxtile breaks_white=mort_white, nq(6) 按照变量 mort_white (白人死亡率) 的数值大小将观测值分为 6 组。上述绘图结果中,每个组别的观测值数量近乎相等,对应每种颜色覆盖的区域数量也大体相当。Equally-sized 的着色方式把数据按照分位数分组,上述着色的深浅程度是按照如下方式对应的:

我们也可以在命令语句 maptile mort_white, geo(state) legd(0) 结尾加上 propcolor 选项,来使用 Proportionally-spaced 的方式着色。即使用命令 maptile mort_white, geo(state) legd(0) propcolor 后,可以得到如下结果:

可以看出,这样得到的色彩填充情况与前面的图示存在较大差别。事实上,这种着色方式是按照如下步骤进行的:

  • 首先计算每个组别对应的中值;
  • 在色带最左侧放置最小组别 (中值),色带的右侧放置最大组别 (中值);
  • 中间组别依照和上述两者的距离按比例着色。

为了更直观地解释着色过程,我们使用 matrix list r(midpoints) 查看每个组别的中值,得到:

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
. matrix list r(midpoints)
r(midpoints)[6,1] c1r1 656.70001r2 686.90002r3 714.39999r4 738.29999r5 799.05002r6 902.60001

基于各组别的中值,对应的着色方式如下:

还有一种 Equally-spaced 的着色方式,这种方式依照数值范围对数据进行分组。不同于前面两种着色方式,此时每个组别中的样本数量不再保持一致。使用命令 maptile mort_white, geo(state) legd(0) cutvalues(650(50)900) 得到的着色效果如下:

2.4 比较组别间的差异

按照如下命令分别绘制美国白人和黑人死亡率的分布情况:

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
. foreach race in white black {  2.     maptile mort_`race', geo(state) legd(0)  3. }

白人死亡率的分布情况已经在前文中列出,在此仅列出黑人死亡率的分布情况:

在每张图示中,我们可以清晰地获知如下信息:相比于其他地区,哪些地区的美国黑人/白人处境最糟糕?当我们试图了解相比于美国白人,美国黑人处境如何时,就需要对地区的分割情况进行控制。我们先利用如下命令生成变量 “mort_white_breaks”,来指示白人死亡率分布中各组别的临界点。

  • ounter(line
. pctile mort_white_breaks=mort_white, nq(6)

然后,我们用这一组相同的临界点将白人和黑人的死亡率展示在图中。

  • ounter(line
  • ounter(line
. maptile mort_white, geo(state) legd(0) replace cutp(mort_white_breaks). maptile mort_black, geo(state) legd(0) replace cutp(mort_white_breaks)

于是就得到了如下结果:白人的死亡率分布如前文所示,而黑人的死亡率分布的色彩填充发生了明显变化。

2.5 绘制新的地图模板

maptile 的帮助文件中有详细的说明,需要你:

  • 为你想要绘制地图的地区找到对应的 shapefile 文件;
  • 编辑 ado 文件将你的 shapefile 文件和 maptile 联系起来。

如果你有新的地图模板,可以考虑分享给更多人!

2.6 Paul Goldsmith-Pinkham 的案例

Paul Goldsmith-Pinkham 在其主页上提供了将六边形瓦片图 (Hex Tile Grid Maps) 嵌入 maptile (州层级) 的地图中,这种图在如下两个方面具有优势:

  • 可以避免读者对无人居住的地理区域过度关注,并对结果产生误解;
  • 因为州被更好地划分开,读者更容易地看到新英格兰地区 (New England) 的变动情况 (该地区涉及的几个州地理面积较小)。

首先使用如下命令加载地图模板:

  • ounter(line
. maptile_install using "http://files.michaelstepner.com/geo_statehex.zip"

然后用于绘图的示例数据 state_database_clean.dta 大体情况如下。其中数据处理的原始命令,可从压缩文件「geo_statehex_creation」获取。

利用命令 maptile test, geo(statehex) labelhex(state) 即可绘制出如下图示:

3. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 地图, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,700+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxhsongbl 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh