R语言优雅绘制省市区域地图

科技   2024-09-29 22:43   陕西  

欢迎关注R语言数据分析指南

最近有朋友询问如何绘制省市级别的地图,小编今天就来通过一篇文档介绍一下,个人观点仅供参考。地图数据来自官方网站,不需要读取外部数据,成功安装R包后可直接运行。

地图网站

https://datav.aliyun.com/portal/school/atlas/area_selector#&lat=31.728167146023935&lng=104.32617187499999&zoom=3 

右侧直接拷贝所需的json API

加载R包

rm(list = ls())
library(tidyverse)
library(sf)
library(raster)
library(patchwork)
library(showtext)
showtext_auto()

绘制地图

crs_al <- st_crs("+proj=aea +lat_1=25 +lat_2=47 +lon_0=105"

zj <- sf::st_read("https://geo.datav.aliyun.com/areas_v3/bound/330000_full.json") %>%
  st_transform(crs_al) %>% 
  mutate(value=case_when(name =="温州市" ~ 10,
                         name =="丽水市" ~ 10,TRUE ~ 6))                      
zj$centroid <- st_coordinates(st_centroid(zj$geometry))

zj_plot <- ggplot(data = zj) + 
  geom_sf(aes(fill = value), size = 0.2) +  # Draw the shapes
  geom_text(aes(x = centroid[,1], y = centroid[,2], label = name), 
            nudge_x = 0.01, nudge_y = 0.01, size = 3, check_overlap = TRUE) + 
  scale_fill_gradientn(colors = c("#CAC2C0""#1F78B4"), na.value = "white") +
  theme(axis.text = element_blank(),
        axis.ticks = element_blank(),
        axis.title = element_blank(),
        plot.background = element_blank(),
        panel.background = element_blank(),
        legend.position = "none")

hb <- sf::st_read("https://geo.datav.aliyun.com/areas_v2/bound/420000_full.json") %>%
  st_transform(crs_al) %>%
  mutate(value=case_when(name =="荆门市" ~ 10,
                         name =="宜昌市" ~ 10,
                         TRUE ~ 6))

hb$centroid <- st_coordinates(st_centroid(hb$geometry))

hb_plot <- ggplot(data=hb)+ 
  geom_sf(size = .2,aes(fill=value))+
  geom_text(aes(x = centroid[,1], y = centroid[,2], label = name), 
            nudge_x = 0.01, nudge_y = 0.01, size = 3, check_overlap = TRUE) + 
  scale_fill_gradientn(colours = c("#EAE4E1","#407075"),na.value = "white") +
  theme(axis.text =element_blank(),
        axis.ticks = element_blank(),
        axis.title = element_blank(),
        plot.background = element_blank(),
        panel.background = element_blank(),
        legend.position = "non")

zj_plot|hb_plot

上方的代码只绘制到了省市一级的地区,那如何绘制更加详细的区县级的信息,非常的简单将区县级的信息与省市一级的地图信息合并即可。下方代码将在地图中详细的展示出杭州市辖区的信息。

hz <- sf::st_read("https://geo.datav.aliyun.com/areas_v3/bound/330100_full.json") %>%
  st_transform(crs_al)
  
hz$centroid <- st_coordinates(st_centroid(hz$geometry))

zj2 <- sf::st_read("https://geo.datav.aliyun.com/areas_v3/bound/330000_full.json") %>%
  st_transform(crs_al) %>% 
  filter(name !="杭州市")

zj2$centroid <- st_coordinates(st_centroid(zj2$geometry))


zj3 <- zj2 %>% bind_rows(hz) %>% 
  mutate(col=case_when(level =="district" ~ "skyblue",
                       TRUE ~ "#EAE4E1"))
ggplot(data = zj3) + 
  geom_sf(size = 0.2,aes(fill=I(col))) + 
  geom_text(aes(x = centroid[,1], y = centroid[,2], label = name), 
            nudge_x = 0.01, nudge_y = 0.01, size = 3, check_overlap = TRUE) + 
  scale_fill_gradientn(colors = c("#EAE4E1""#1F78B4"), na.value = "white") +
  theme(axis.text = element_blank(),
        axis.ticks = element_blank(),
        axis.title = element_blank(),
        plot.background = element_blank(),
        panel.background = element_blank(),
        legend.position = "none")

关注下方公众号下回更新不迷路

购买介绍

本节介绍到此结束,有需要学习R数据可视化的朋友欢迎到淘宝店铺:R语言数据分析指南,购买小编的R语言可视化文档(2024版),购买将赠送2023年的绘图文档内容。目前此文档(2023+2024)已经更新上传200案例文档,每个案例都附有相应的数据和代码,并配有对应的注释文档,方便大家学习和参考。

2024更新的绘图内容将同时包含数据+代码+注释文档+文档清单,2023无目录仅有数据文件夹,小编只分享案例文档,不额外回答问题,无答疑服务,零基础不推荐买。

案例特点

所选案例图均属于个性化分析图表完全适用于论文发表,内容异常丰富两年累计发布案例图200+,2024年6月起提供html版注释文档更加直观易学。文档累计上千人次购买拥有良好的社群交流体验。R代码结构清晰易懂,为防止中文乱码提供单独的注释文档

群友精彩评论

淘宝店铺

2024年已更新案例图展示

2023年案例图展示


R语言数据分析指南
R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
 最新文章