Stata绘制市级中国地图 | 版本 2.1

Stata绘制市级中国地图 | 版本 2.1

发现上次提供的 Stata 绘制市级地图教程中的地图数据很老了,所以今天又更新了下,本次更新的地图数据是基于 2019 年中国市级行政区划地图数据制作的。包含如下数据文件:

  • china_city_db.dta
  • china_city_coord.dta
  • china_city_line_coord.dta
  • china_city_line_db.dta
  • china_city_long_db.dta
  • china_city_long_coord.dta
  • china_city_long_line_coord.dta
  • china_city_long_line_db.dta

前面四个文件是绘制带九段线小地图的市级地图的,后面的四个文件是绘制竖版市级地图的。

下面我将演示这份数据的使用。

生成一份示例数据

首先生成一份示例数据,这次的数据包含省代码市代码变量,更方便进行数据筛选和匹配。

1
2
3
4
5
6
* 生成一份示例数据
use china_city_db, clear
* 生成随机数
gen value = int(runiform(1, 84))
keep 省 市 value
save 示例数据, replace

带九段线小地图的中国市级地图

下面我们就可以把示例数据和地图数据合并进行绘图了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
* 把地图数据和示例数据合并
use china_city_db, clear
merge 1:1 省 市 using 示例数据
* 只保存合并成功的
keep if _m == 3
spmap value using china_city_coord.dta, id(ID) ///
fcolor("252 255 164" "252 181 25" "237 105 37" "187 55 84" ///
"120 28 109" "51 10 95") ///
ocolor("black" ...) ///
clmethod(custom) clbreaks(0 14 28 42 56 70 84) ///
ti(Stata 绘制带九段线小地图的中国市级地图, size(*1.2) color(black)) ///
graphr(margin(medium)) ///
subti("2019 年中国市级行政区划", color(black)) ///
caption("版本 2.0 | TidyFriday 出品", size(*0.6)) ///
osize(vvthin ...) ///
legend(size(*1.3) ///
order(2 "0~14" 3 "14~28" 4 "28~42" 5 "42~56" 6 "56~70" 7 "70~84") ///
ti(示例数据, size(*0.5) pos(11) color(black)) color(black)) ///
line(data(china_city_line_coord.dta) size(*0.1 ...) color(black)) ///
xsize(13) ysize(10)

由于 china_city_line_coord.dta 数据包含了全部市的边界和国界线,所以直接使用会产生这样一个问题,就是市界需要很细,但是九段线的框格和国界线我们想让它粗点,所以我们可以过滤出九段线框格和国界线单独使用:

1
2
3
4
5
6
use china_city_line_db, clear

* 可以看出九段线框格和国界线对应的 ID 是 372 和 373
use china_city_line_coord, clear
keep if _ID >= 372
save mybox_coord, replace

重新绘制地图:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use china_city_db, clear
merge 1:1 省 市 using 示例数据
keep if _m == 3
spmap value using china_city_coord.dta, id(ID) ///
fcolor("252 255 164" "252 181 25" "237 105 37" "187 55 84" ///
"120 28 109" "51 10 95") ///
ocolor("black" ...) ///
clmethod(custom) clbreaks(0 14 28 42 56 70 84) ///
ti(Stata 绘制带九段线小地图的中国市级地图, size(*1.1) color(black)) ///
graphr(margin(medium)) ///
subti("2019 年中国市级行政区划", color(black)) ///
caption("版本 2.0 | TidyFriday 出品", size(*0.8)) ///
osize(vvthin ...) ///
legend(size(*1.3) ///
order(2 "0~14" 3 "14~28" 4 "28~42" 5 "42~56" 6 "56~70" 7 "70~84") ///
ti(示例数据, size(*0.5) pos(11) color(black)) color(black)) ///
line(data(mybox_coord) size(*0.5 ...) color(black)) ///
xsize(13) ysize(10)

竖版中国市级地图

绘图方法一模一样,就是使用的数据是绘制竖版地图的数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use china_city_long_line_coord, clear
keep if _ID >= 372
save mybox_long_coord, replace

use china_city_long_db, clear
merge 1:1 省 市 using 示例数据
keep if _m == 3
spmap value using china_city_long_coord.dta, id(ID) ///
fcolor("252 255 164" "252 181 25" "237 105 37" "187 55 84" ///
"120 28 109" "51 10 95") ///
ocolor("black" ...) ///
clmethod(custom) clbreaks(0 14 28 42 56 70 84) ///
ti(Stata 绘制带九段线小地图的中国市级地图, size(*1.1) color(black)) ///
graphr(margin(medium)) ///
subti("2019 年中国市级行政区划", color(black)) ///
caption("版本 2.0 | TidyFriday 出品", size(*0.8)) ///
osize(vvthin ...) ///
legend(size(*1.3) ///
order(2 "0~14" 3 "14~28" 4 "28~42" 5 "42~56" 6 "56~70" 7 "70~84") ///
ti(示例数据, size(*0.5) pos(11) color(black)) color(black)) ///
line(data(mybox_long_coord.dta) size(*0.5 ...) color(black)) ///
xsize(13) ysize(10)

市的类别

大家注意到这份地图数据里面又一个变量是市的类别,所以我们可以使用这个变量进行填充:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use china_city_db, clear
encode 类型, generate(type)
codebook type
spmap type using china_city_coord.dta, id(ID) ///
fcolor("27 12 66" "75 12 107" "120 28 109" "165 44 96" "207 68 70" "237 105 37" "251 154 6" "247 208 60" "252 255 164") ///
ocolor("black" ...) ///
clmethod(custom) clbreaks(0 1 2 3 4 5 6 7 8 9) ///
ti(Stata 绘制带九段线小地图的中国市级地图, size(*1.1) color(black)) ///
graphr(margin(medium)) ///
subti("2019 年中国市级行政区划", color(black)) ///
caption("版本 2.0 | TidyFriday 出品", size(*0.8)) ///
osize(vvthin ...) ///
legend(size(*1.3) ///
order(2 "不统计" 3 "副省级市" 4 "地区" 5 "地级市" 6 "特别行政区" 7 "盟" 8 "直辖市" 9 "省直辖县" 10 "自治州") ///
ti(类型, size(*0.5) pos(11) color(black)) color(black)) ///
line(data(mybox_coord) size(*0.5 ...) color(black)) ///
xsize(13) ysize(10)

竖版的也没问题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use china_city_long_db, clear
encode 类型, generate(type)
codebook type
spmap type using china_city_long_coord.dta, id(ID) ///
fcolor("27 12 66" "75 12 107" "120 28 109" "165 44 96" "207 68 70" "237 105 37" "251 154 6" "247 208 60" "252 255 164") ///
ocolor("black" ...) ///
clmethod(custom) clbreaks(0 1 2 3 4 5 6 7 8 9) ///
ti(Stata 绘制带九段线小地图的中国市级地图, size(*1.1) color(black)) ///
graphr(margin(medium)) ///
subti("2019 年中国市级行政区划", color(black)) ///
caption("版本 2.0 | TidyFriday 出品", size(*0.8)) ///
osize(vvthin ...) ///
legend(size(*1.3) ///
order(2 "不统计" 3 "副省级市" 4 "地区" 5 "地级市" 6 "特别行政区" 7 "盟" 8 "直辖市" 9 "省直辖县" 10 "自治州") ///
ti(类型, size(*0.5) pos(11) color(black)) color(black)) ///
line(data(mybox_long_coord) size(*0.5 ...) color(black)) ///
xsize(13) ysize(10)

好啦,这次更新就是这些内容了。

封面图

最后再绘制一幅 2.35:1 的图片作为推文封面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
use china_city_db, clear
encode 类型, generate(type)
spmap type using china_city_coord.dta, id(ID) ///
fcolor("27 12 66" "75 12 107" "120 28 109" "165 44 96" "207 68 70" "237 105 37" "251 154 6" "247 208 60" "252 255 164") ///
ocolor("white" ...) ///
clmethod(custom) clbreaks(0 1 2 3 4 5 6 7 8 9) ///
graphr(margin(medium)) ///
osize(vvthin ...) ///
legend(size(*1.3) ///
order(2 "不统计" 3 "副省级市" 4 "地区" 5 "地级市" 6 "特别行政区" 7 "盟" 8 "直辖市" 9 "省直辖县" 10 "自治州") ///
ti(类型, size(*0.5) pos(11) color(white)) color(white)) ///
line(data(mybox_coord) size(*0.5 ...) color(white)) ///
xsize(10) ysize(8.5) name(a, replace) nodraw

use china_city_long_db, clear
encode 类型, generate(type)
spmap type using china_city_long_coord.dta, id(ID) ///
fcolor("27 12 66" "75 12 107" "120 28 109" "165 44 96" "207 68 70" "237 105 37" "251 154 6" "247 208 60" "252 255 164") ///
ocolor("white" ...) ///
clmethod(custom) clbreaks(0 1 2 3 4 5 6 7 8 9) ///
graphr(margin(medium)) ///
osize(vvthin ...) ///
legend(size(*1.3) ///
order(2 "不统计" 3 "副省级市" 4 "地区" 5 "地级市" 6 "特别行政区" 7 "盟" 8 "直辖市" 9 "省直辖县" 10 "自治州") ///
ti(类型, size(*0.5) pos(11) color(white)) color(white)) ///
line(data(mybox_long_coord) size(*0.5 ...) color(white)) ///
xsize(10) ysize(8.5) name(b, replace) nodraw

gr combine a b, xsize(20) ysize(8.5) ///
ti(Stata 绘制带九段线小地图的中国市级地图, ///
color(white) pos(12) size(*1.5)) ///
subti("2019 年中国市级行政区划", ///
color(white) pos(12) size(*1.5)) ///
caption("版本 2.0 | TidyFriday 出品") ///
plotr(fcolor(24 24 24) lcolor(24 24 24)) ///
graphr(fcolor(24 24 24) lcolor(24 24 24))

gr export "title.png", width(3000) height(1277) replace

知识星球附件链接:https://t.zsxq.com/NZ7QZBq

#

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×