在R中基于指定值为省级Shapefile添加渐变着色
省级Shapefile与数值数据关联并可视化完整方案
1. 数据读取与关联
首先读取省级Shapefile,再将其与包含省级名称、对应数值的数据集关联,核心前提是两个数据集的省级名称字段必须完全匹配(无空格差异、大小写统一、别名一致),否则会出现关联失败或匹配错误的情况。
代码示例
# 加载所需工具包 library(raster) # 用于读取Shapefile library(ggplot2) # 读取本地省级Shapefile文件 state <- shapefile("你的文件路径/file.shp") # 关联空间数据与数值数据集,by参数指定匹配的省级名称字段 # 假设data_char的省级名称列名为"province",state中对应字段也为"province" state_n <- merge(state, data_char, by = "province")
2. 绘制渐变填充的省级地图
ggplot2对sf格式的空间数据支持更友好,先将关联后的sp对象转换为sf格式,再以数值字段为依据设置渐变填充色:
代码示例
# 加载sf包用于空间数据格式转换 library(sf) # 将sp格式的关联数据转换为sf格式 state_sf <- st_as_sf(state_n) # 生成带渐变填充的省级分布图 ggplot(state_sf) + geom_sf(aes(fill = B)) + # B为data_char中的数值列名 scale_fill_gradient(low = "#f0f8ff", high = "#0050b3") + # 自定义渐变色彩区间 labs(title = "省级数值分布热力图", fill = "指标数值") + theme_minimal() + theme(axis.text = element_blank(), axis.ticks = element_blank()) # 隐藏冗余坐标轴元素
关键注意事项
- 若省级名称存在不匹配情况,需先对数据做清洗:比如统一大小写、替换"省/自治区"等别名、删除多余空格。
- 推荐使用sf包的
st_read()读取Shapefile,搭配dplyr::left_join()做关联,比基础merge更灵活,也更适配ggplot2的可视化流程。
内容的提问来源于stack exchange,提问作者VIX
相关产品推荐
相关产品推荐

