如何在R语言中制作含英国与爱尔兰的地图并解决报错问题?
搞定R语言中英国+爱尔兰地图的实用方案
别担心!作为R新手遇到地图拼接的问题太正常了,我来给你一步步拆解怎么实现目标,还能轻松导入你的经纬度数据点~
推荐方案:用rnaturalearth+ggplot2(最适合新手)
这个组合能直接获取标准的国家边界数据,操作简单,兼容性强,完全适配新手需求。
1. 安装并加载必要的包
第一次使用时先安装依赖包,之后每次使用加载即可:
# 安装依赖包(仅第一次运行) install.packages(c("rnaturalearth", "sf", "ggplot2")) # 加载包 library(rnaturalearth) library(sf) library(ggplot2)
2. 获取英国和爱尔兰的边界数据
用ne_countries函数直接调取两个国家的空间数据,指定returnclass = "sf"是为了让数据能被ggplot2直接识别:
# 获取英国+爱尔兰的空间边界数据 uk_ie_map <- ne_countries(country = c("United Kingdom", "Ireland"), returnclass = "sf")
小提示:如果遇到国家名称匹配问题,可以用ISO代码代替,比如英国是
"GB",爱尔兰是"IE",代码改成country = c("GB", "IE")即可。
3. 绘制基础地图
用ggplot2的geom_sf函数快速生成地图,还能自定义样式:
ggplot() + geom_sf(data = uk_ie_map, fill = "#f8f8f8", color = "#2d2d2d") + # 自定义填充色和边界色 theme_minimal() + # 清爽的极简主题 labs(title = "英国与爱尔兰地图")
4. 添加你的经纬度数据点
假设你的数据存储在CSV文件里,包含lon(经度)和lat(纬度)列,按以下步骤把数据点叠加到地图上:
# 读取你的数据(替换成你的实际文件路径) your_points <- read.csv("your_data.csv") # 叠加数据点到地图 ggplot() + geom_sf(data = uk_ie_map, fill = "#f8f8f8", color = "#2d2d2d") + geom_point(data = your_points, aes(x = lon, y = lat), color = "#e63946", size = 2.5, alpha = 0.8) + # 自定义点的颜色、大小和透明度 theme_minimal() + labs(title = "英国与爱尔兰地图 + 自定义数据点")
常见报错排查
如果你之前尝试时出现报错,大概率是这几个原因:
- 旧包的区域名称问题:旧版
maps包对区域名称匹配很严格,比如用"UK"可能无法识别包含北爱尔兰的全英国,换成rnaturalearth就能避免这个问题。 - 经纬度搞反:新手常把纬度(lat)和经度(lon)弄混,务必确保
geom_point里是x=lon,y=lat。 - 坐标系不匹配:如果你的数据不是WGS84坐标系,需要用
st_transform()转换,比如:your_points_sf <- st_as_sf(your_points, coords = c("lon", "lat"), crs = 4326)
试试上面的方法,应该就能顺利生成符合需求的地图啦~
内容的提问来源于stack exchange,提问作者Becky Bailey




