本文主要介绍如何利用R语言绘制区域示意图。如下图所示。更多内容可关注微信公众号【日常分享的小懒猫】。
1、数据读取
数据有2个,一个为shp地图数据,shp地图来自阿里云地图选择器[1],另一个为31个省份对应的地理分区数据,参考相关文献(李超等,2015)[2]将31个省份分为东部地区、东北地区、中部地区、西部地区四大地理分区。
加载package
#【Author】WeChat:日常分享的小懒猫
setwd("C:\\Users\\Acer\\Desktop")
library(tidyverse)
library(sf)
读取shp数据
shp <- sf::read_sf("China_shp.shp") #read shp
shp

读取省份对应的地理分区数据
data <- readxl::read_xlsx("C:/Users/Acer/Desktop/GDP2020.xlsx") #read data
head(data)
# province region per.GDP
# <chr> <chr> <dbl>
#1 北京市 东部地区 164889
#2 天津市 东部地区 101614
#3 河北省 东部地区 48564
#4 山西省 中部地区 50528
#5 内蒙古自治区 西部地区 72062
#6 辽宁省 东北地区 58872
数据合并及投影设置
my_shp <- merge(data, shp, by.x = "province", by.y = "name", all = TRUE) #merge data
my_shp$overall = "WeChat:日常分享的小懒猫"
my_shp <- st_as_sf(my_shp, crs = 4326) #设置坐标系
my_shp <- my_shp %>% st_transform("+proj=aea +lat_1=25 +lat_2=47 +lon_0=105") #设置投影
my_shp

2、图形绘制
#【Author】WeChat:日常分享的小懒猫
ggplot(my_shp) +
geom_sf(aes(fill = region, geometry = geometry)) +
scale_fill_brewer(palette = "Set3") +
facet_wrap(~overall) +
labs(fill = "地理分区") +
theme_bw() +
theme(axis.title = element_blank(),
strip.text = element_text(size = 25))

3、在地图上添加标签
对分区shp进行合并
#【Author】WeChat:日常分享的小懒猫
my_shp_west <- my_shp %>% filter(region == "西部地区") %>% st_make_valid() %>% st_union()
my_shp_west
my_shp_center <- my_shp %>% filter(region == "中部地区") %>% st_make_valid() %>% st_union()
my_shp_center
my_shp_northeast <- my_shp %>% filter(region == "东北地区") %>% st_make_valid() %>% st_union()
my_shp_northeast
my_shp_east <- my_shp %>% filter(region == "东部地区") %>% st_make_valid() %>% st_union()
my_shp_east

图形绘制
#【Author】WeChat:日常分享的小懒猫
ggplot(my_shp) +
geom_sf(aes(fill = region, geometry = geometry), show.legend = FALSE) +
scale_fill_brewer(palette = "Set3") +
geom_sf_text(data = my_shp_west, aes(label = "西部地区"), size = 8) +
geom_sf_text(data = my_shp_center, aes(label = "中部地区"), size = 8) +
geom_sf_text(data = my_shp_northeast, aes(label = "东北地区"), size = 8) +
geom_sf_text(data = my_shp_east, aes(label = "东部地区"),x = 1415682, y = 3005671.9, size = 8) +
facet_wrap(~overall) +
theme_bw() +
theme(axis.title = element_blank(),
strip.text = element_text(size = 25))

4、其他
更多内容可关注微信公众号【日常分享的小懒猫】。
如有帮助请多多点赞哦!
参考资料
DataV.GeoAtlas: http://datav.aliyun.com/portal/school/atlas/area_selector
[2]李超,倪鹏飞,万海远: 中国住房需求持续高涨之谜:基于人口结构视角[J].经济研究,2015,50(05):118-133.
文章转载自日常分享的小懒猫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




