欢迎关注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代码结构清晰易懂,为防止中文乱码提供单独的注释文档