# Stata：地图绘制命令介绍-maptile

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

New！ `lianxh` 命令发布了：

`. ssc install lianxh`

`. help lianxh`

⛳ Stata 系列推文：

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

## 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 美国人口数据绘制

• 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``

### 2.2 地图模板的配合使用

• 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"``

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

• 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 命令的着色方式

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

• 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]``           c1``r1  656.70001``r2  686.90002``r3  714.39999``r4  738.29999``r5  799.05002``r6  902.60001``

### 2.4 比较组别间的差异

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

• 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"``

## 3. 相关推文

Note：产生如下推文列表的 Stata 命令为：
`lianxh 地图, m`

`ssc install lianxh, replace`

## 相关课程

### 最新课程-直播课

• Note: 部分课程的资料，PPT 等可以前往 连享会-直播课 主页查看，下载。

### 关于我们

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

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

New！ `lianxh``songbl` 命令发布了：

`. ssc install lianxh`

`. help lianxh`