查看原文
其他

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

连享会 连享会 2023-10-24

👇 连享会 · 推文导航 | www.lianxh.cn




连享会 · 2023 寒假班




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


目录

  • 1. 命令安装

  • 2. 案例说明

    • 2.1 美国人口数据绘制

    • 2.2 地图模板的配合使用

    • 2.3 maptile 命令的着色方式

    • 2.4 比较组别间的差异

    • 2.5 绘制新的地图模板

    • 2.6 Paul Goldsmith-Pinkham 的案例

  • 3. 相关推文



温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:

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

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

1. 命令安装

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 变量名称。为了展示作者提供的案例,我们先安装美国和加拿大的地图模板。

. maptile_install using "http://files.michaelstepner.com/geo_state.zip"
. maptile_install using "http://files.michaelstepner.com/geo_can_prov.zip"

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

. 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,并按照作者提供的如下命令进行预处理。

. 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 部分的要求,对原始数据文件的名称进行修改。

. rename statecode statefips
. rename state statename

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

. 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) 查看每个组别的中值,得到:

. 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

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

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

2.4 比较组别间的差异

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

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

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

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

. pctile mort_white_breaks=mort_white, nq(6)

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

. 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) 的变动情况 (该地区涉及的几个州地理面积较小)。

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

. 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

  • 专题:Stata命令
    • Stata:空间计量之用-spmap-绘制地图.md
  • 专题:Stata绘图
    • Stata绘图:世行可视化案例-条形图-密度函数图-地图-断点回归图-散点图
  • 专题:空间计量
    • Stata:我和她离多远?基于百度地图API的地理距离计算
    • GIS地图制作栅格计算器的应用

课程推荐:因果推断实用计量方法
主讲老师:邱嘉平教授
🍓 课程主页https://gitee.com/lianxh/YGqjp

New! Stata 搜索神器:lianxhsongbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉  使用:
. lianxh DID 倍分法
. songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。


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

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