如何使用R语言绘制欧盟国家及其海洋边界的地图?
实现方案
你可以通过sf、rnaturalearth和ggplot2三个常用R包完成欧盟国家+海洋边界的绘制,核心思路是分别获取欧盟国家的陆域矢量数据、海洋专属经济区(EEZ,通用的海洋管辖边界数据)矢量数据,之后叠加绘图即可。
步骤1:安装加载依赖包
# 首次使用请先安装 install.packages(c("sf", "rnaturalearth", "rnaturalearthdata", "ggplot2", "dplyr")) # 加载包 library(sf) library(rnaturalearth) library(ggplot2) library(dplyr)
步骤2:筛选目标区域数据
# 1. 筛选欧盟27国陆域数据 # 加载全球国家矢量数据 global_countries <- ne_countries(scale = "medium", returnclass = "sf") # 定义欧盟成员国列表,可按需增减 eu_member <- c("Austria", "Belgium", "Bulgaria", "Croatia", "Cyprus", "Czech Republic", "Denmark", "Estonia", "Finland", "France", "Germany", "Greece", "Hungary", "Ireland", "Italy", "Latvia", "Lithuania", "Luxembourg", "Malta", "Netherlands", "Poland", "Portugal", "Romania", "Slovakia", "Slovenia", "Spain", "Sweden") eu_land <- global_countries %>% filter(sovereignt %in% eu_member) # 2. 筛选欧盟国家对应海洋边界(专属经济区EEZ)数据 global_eez <- ne_download(type = "eez", scale = "medium", returnclass = "sf") eu_marine <- global_eez %>% filter(sovereign1 %in% eu_member)
步骤3:叠加绘图
ggplot() + # 底层绘制海洋区域,填充浅蓝色 geom_sf(data = eu_marine, fill = "#b3e5fc", color = "#0288d1", linewidth = 0.2) + # 上层绘制陆地区域,填充浅绿色 geom_sf(data = eu_land, fill = "#c8e6c9", color = "#2e7d32", linewidth = 0.3) + # 限定绘图范围,聚焦欧洲区域避免展示法国海外领地等无关区域 coord_sf(xlim = c(-32, 46), ylim = c(30, 73)) + # 主题调整 theme_bw() + labs( title = "欧盟成员国及海洋管辖边界", x = "经度", y = "纬度" )
补充说明
- 若需要更高精度的边界,可将
scale参数从"medium"改为"large",对应数据加载时间会更长 - 如果需要自定义边界样式,直接调整
geom_sf中的fill(填充色)、color(边界色)、linewidth(边界宽度)参数即可 - 如需叠加其他地理要素(河流、城市等),可从
rnaturalearth包的对应数据接口获取后,新增geom_sf图层叠加即可
内容的提问来源于stack exchange,提问作者Hongyu
相关产品推荐
相关产品推荐

