前不久给大家分享了「1985~2024年省份间、城市间及区县间各类型专利合作数量面板数据」,在推文中我给大家展示了区县间、城市间和省份间的专利合作网络。今天我们以城市间专利申请合作网络为例讲解如何绘制这种空间网络图。
在本次课及下次课我们将介绍两种方法:
- 使用 ggplot2 的基础图层绘制空间网络图,这是个很基础和直观的方法,非常有必要掌握;
- 使用 ggraph 包的网络相关图层绘制,这个可以实现更多功能,也非常值得掌握:
| 基础 ggplot2 绘制 | ggraph 包图层绘制 |
|---|---|
在学习本课程之前需要预先学习之前的课程:
使用 R 语言绘制历年中国省市区县地图(小地图版本+长版): https://rstata.duanshu.com/#/brief/course/379d19770956478ebc4d919910fca74c
本课程中使用的地图数据也都是来自该课程。
首先加载所需的 R 包:
library(tidyverse) |
读取 2020 年城市间各类型专利合作数量统计数据:
haven::read_dta("2020年城市间各类型专利合作数量统计.dta") -> df |
#> # A tibble: 12,316 × 7 |
中国地图通常使用这样的坐标系:
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" |
读取地图数据:
read_sf("chinaprov2021mini/chinaprov2021mini_line.shp") %>% |
#> Simple feature collection with 37 features and 1 field |
read_sf("chinacity2021mini/chinacity2021mini.shp") %>% |
#> Simple feature collection with 371 features and 6 fields |
地图配色可以使用这个网站:https://tidyfriday.cn/colors
仅仅保留需要的变量,三沙市的位置会影响图表的比例,而且专利申请的很少,还是从数据中去除了:
df %>% |
统计每个城市与其他城市的总合作量:
df %>% |
#> # A tibble: 360 × 2 |
df %>% |
读取未经编辑的城市矢量数据,因为我们需要这个数据来计算各城市的质心:
> 此处代码需下载讲义材料查看~ |
#> # A tibble: 371 × 4 |
把 df 和 city_centroiddf 匹配起来就可以得到每条合作线起点和终点的坐标了:
df %>% |
#> # A tibble: 12,312 × 13 |
简化地图数据,这样绘制地图更快一些:
city %>% |
然后准备两个数据:first100df 和 first10df,第一个用来绘制城市散点(只绘制 100 个),第二个用来添加文本标签(只添加 10 个)。太多就会密密麻麻的,反而效果很差。
> 此处代码需下载讲义材料查看~ |
#> # A tibble: 10 × 4 |
然后就可以绘图了。由于细节很多,这里就不在一一解释了,感兴趣的小伙伴可以结合视频讲解学习:
ggplot() + |
![]()
附件中也提供了区县和省份的绘图代码,感兴趣的小伙伴也可以拿来参考。
下次课我们再继续讲解如何使用 ggraph 包绘制类似的图表。
点击这里跳转到 RStata 短书平台获取附件:使用 R 语言绘制城市间专利合作申请数量网络图(一)
评论