You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于R与rnaturalearth:构建分面地图并移除塞浦路斯内部边界

优化后的欧洲分面色彩地图代码方案

以下是精简后的实现代码,通过链式操作整合数据处理与地图绘制流程,同时高效处理塞浦路斯内部边界问题:

# 加载所需包
library(rnaturalearth)
library(sf)
library(tidyverse)

# 1. 获取并预处理欧洲地图数据(含塞浦路斯边界合并)
europe_map <- ne_countries(continent = "Europe", returnclass = "sf") %>%
  # 过滤保留主权国家(可按需调整条件)
  filter(sovereignt != "Antarctica") %>%
  # 合并塞浦路斯内部多区块边界
  group_by(admin) %>%
  summarise(geometry = st_union(geometry), .groups = "drop") %>%
  # 重命名列以匹配业务数据格式
  rename(country = admin)

# 2. 模拟年份占比数据(替换为你的真实业务数据)
set.seed(123)
year_data <- expand_grid(
  country = europe_map$country,
  year = c(2018, 2019, 2020, 2021)
) %>%
  mutate(value = runif(n(), min = 0, max = 100))

# 3. 合并数据并绘制分面地图
europe_map %>%
  left_join(year_data, by = "country") %>%
  ggplot() +
  geom_sf(aes(fill = value), color = "white", size = 0.1) +
  # 按年份分面,设置列数
  facet_wrap(~year, ncol = 2) +
  # 配置色彩渐变与图例
  scale_fill_viridis_c(option = "plasma", name = "占比(%)") +
  # 精简主题样式
  theme_minimal() +
  theme(
    axis.text = element_blank(),
    axis.title = element_blank(),
    panel.grid = element_blank(),
    legend.position = "bottom"
  )

关键优化点说明

  • 链式操作简化流程:用%>%将地图获取、边界处理、数据合并、绘图全流程串联,避免创建冗余中间变量,逻辑更连贯。
  • 一站式处理塞浦路斯边界:在地图预处理阶段,直接通过group_by+st_union合并塞浦路斯的多区块几何图形,省去单独提取、合并再拼接的繁琐步骤。
  • 提前统一数据格式:获取地图数据时直接重命名国家列,后续与业务数据合并无需重复调整列名;同时提前筛选欧洲主权国家,减少无效数据干扰。
  • 精简绘图配置:用theme_minimal快速去除冗余元素,再针对性隐藏坐标轴、网格线,让地图视觉焦点集中在色彩与国家区域上。

内容的提问来源于stack exchange,提问作者larry77

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 10:11:15