暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

R语言绘图|区域示意图

533
点击关注了解更多哦

本文主要介绍如何利用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、其他

更多内容可关注微信公众号日常分享的小懒猫】。


如有帮助请多多点赞哦!

参考资料

[1]

DataV.GeoAtlas: http://datav.aliyun.com/portal/school/atlas/area_selector

[2]

李超,倪鹏飞,万海远: 中国住房需求持续高涨之谜:基于人口结构视角[J].经济研究,2015,50(05):118-133.


文章转载自日常分享的小懒猫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论