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

如何使用ggplot2的map_data()绘制特定国家底图及替代多边形获取函数

使用ggplot2的map_data()创建特定国家底图(以塞舌尔为例)

要基于map_data()生成特定国家的底图,核心是先获取世界地图数据,再筛选目标国家的地理多边形:

  1. 加载必要的包:ggplot2用于绘图,dplyr用于数据筛选
  2. 调用map_data("world")获取世界地图的多边形数据,通过filter()筛选出塞舌尔(注意内置的国家名称是"Seychelles")
  3. 用geom_polygon()绘制多边形,配合coord_fixed()保持地图比例,theme_void()简化样式

示例代码:

library(ggplot2)
library(dplyr)

# 获取并筛选塞舌尔的地图数据
seychelles_map <- map_data("world") %>%
  filter(region == "Seychelles")

# 绘制背景底图
ggplot() +
  geom_polygon(data = seychelles_map, 
               aes(x = long, y = lat, group = group),
               fill = "#a8d1d1", 
               color = "#333333") +
  coord_fixed(ratio = 1) +
  theme_void()

注意:如果筛选不到目标国家,可通过unique(map_data("world")$region)查看所有内置的国家名称,确认拼写是否匹配。

其他获取国家多边形数据的函数/包

除了map_data(),还有几个常用的工具可以获取更精准或细分的地理数据:

  • rnaturalearth包:提供高精度的全球地理数据,支持sf空间格式,适合现代空间分析:
library(rnaturalearth)
library(sf)

# 获取塞舌尔的sf格式数据(scale参数控制精度:110=低精度,10=高精度)
seychelles_sf <- ne_countries(country = "Seychelles", 
                              returnclass = "sf",
                              scale = 10)

# 用ggplot绘制sf格式数据
ggplot(seychelles_sf) +
  geom_sf(fill = "#a8d1d1", color = "#333333") +
  theme_void()
  • maps包的map()函数:基础绘图系统的直接绘制方法,适合快速生成简单地图:
library(maps)
map("world", regions = "Seychelles", fill = TRUE, col = "#a8d1d1")
  • GADMTools包:提供多级行政区划数据(国家、省、市等),通过ISO国家代码调用:
library(GADMTools)
# SYC是塞舌尔的ISO 3166-1代码,level=0代表国家层级
seychelles_gadm <- gadm_sf("SYC", level = 0)

ggplot(seychelles_gadm) +
  geom_sf(fill = "#a8d1d1", color = "#333333") +
  theme_void()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:30:53