有时需要展示各个地区的不同情况,这时可以作地图热图。如下所示,用地图热图展示湖北省各个城市的得分差异。
1. 需要的数据文件,地市得分.csv
2. R代码
a. 在线读取湖北省各市的空间矢量数据json
library(sf)
library(ggspatial)
library(tidyverse)
hubei_map = st_read("https://geo.datav.aliyun.com/areas_v3/bound/420000_full.json")[c("adcode","name","geometry")]
b. 读取湖北省各市的得分数据,并与空间矢量数据合并为一个数据框
heatmap_data <- read.csv("地市得分.csv")
merged_data <- left_join(hubei_map, heatmap_data, by = "name")
c. 绘图
其中通过annotation_north_arrow绘制指北针,annotation_scale添加比例尺,coord_sf设置纬度和经度限制,geom_sf_label添加地图标签。
ggplot() + geom_sf(data = merged_data, aes(fill = number), color = "black") +
scale_fill_gradient(low = "white", high = "red") +
annotation_north_arrow(location = "tl", style = north_arrow_fancy_orienteering()) +
annotation_scale(location = "tr") +
theme_light() +
theme(axis.text = element_text(color = "black")) +
geom_sf_label(data = merged_data, aes(label = paste0(merged_data$name, "\n(", merged_data$number, ")")), color = "black", size = 3, fill = NA, label.size=NA, label.padding = unit(0.2, "lines"), label.r = unit(0, "lines"))