前不久给大家分享过「上市公司前5大供应商和客户工商注册数据匹配结果(含经纬度和所处的省市区县)」数据,在数据介绍中我展示了「2022 年上市公司前 5 大客户与供应商地理分布」:
![]()
这幅图是使用 Stata 绘制,今天的课程中我们将一起学习下该如何在 Stata 中绘制。
在学习该课程前,需要预先学习下面两个课程:
- 使用 R 语言绘制历年中国省市区县地图(小地图版本+长版):https://rstata.duanshu.com/#/brief/course/379d19770956478ebc4d919910fca74c
- 使用 R 语言绘制带邻国地区的中国地图:https://rstata.duanshu.com/#/brief/course/595e69cd0cf0417c8f72f0c007ea9d37
今天的课程也将在之前的这两个课程的基础上进行讲解。
绘制地图和在地图上添加散点图的方法之前我们都已经讲解过了,因此我们今天就直接来看如何在地图上添加连接线。
显然,连接线需要的数据至少应该包含起始点的经纬度坐标,下面我们先构造绘制连接线所需的数据。
加载所需的 R 包:
library(tidyverse) |
读取上市公司经纬度数据:
haven::read_dta("上市公司注册地址经纬度数据.dta") -> df0 |
中国地图通常使用这样的坐标系:
mycrs <- "+proj=aea +lat_0=0 +lon_0=105 +lat_1=25 +lat_2=47 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs" |
由于绘图使用的底图是 mycrs 坐标系下的,所以下面我们需要把所有的经纬度都转换成 mycrs 坐标系下的坐标:
df0 %>% |
构造上市公司-供应商连接线数据:
# 构造上市公司-供应商连接线数据 |
构造上市公司-客户连接线数据:
haven::read_dta("2022年上市公司客户信息.dta") %>% |
构造散点数据:
bind_rows( |
在读取相关的地图数据:
# 读取小地图版本的中国城市地图 |
为了让图表更美观,我们可以提取小地图部分的散点也绘制到图上:
# 小地图的范围 |
绘图区域(数据制作的时候预设好的):
st_bbox(c(xmin = -2725586, |
然后就可以绘图了:
# 绘图 |
![]()
上市公司和客户的连接线绘制方法类似:
# 上市公司——客户 |
![]()
最后还可以合并两幅图并使用相同的图例:
# 合并两幅图 |
![]()
点击这里跳转到 RStata 短书平台获取附件:使用 R 语言绘制中国地图 + 空间网络图
评论