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

geom_sf()的size参数无响应,叙利亚地图边框无法调整

ggplot2绘制叙利亚地图时geom_sf的size参数无效的解决思路

问题背景

使用ggplot2绘制叙利亚地图时,尝试通过size参数增大国家边框线粗细,但该参数未产生预期效果。复现代码及对应效果如下:

默认绘制代码

library(raster)
#> Loading required package: sp
library(tidyverse)
library(sf)
#> Linking to GEOS 3.11.0, GDAL 3.5.3, PROJ 9.1.0; sf_use_s2() is TRUE

admin0.shp <- getData('GADM', country='SYR', level=0)
#> Warning in getData("GADM", country = "SYR", level = 0): getData will be removed in a future version of raster
#> . Please use the geodata package instead
admin0.shp <- st_as_sf(admin0.shp)

ggplot(admin0.shp)+
  geom_sf()

默认效果:
默认效果

设置size=2后的代码

ggplot(admin0.shp)+
  geom_sf(size=2)

设置后的效果:
设置size=2后的效果

解决思路

  • 更换数据获取工具:原代码中raster包的getData已被标记为即将移除,建议使用官方推荐的geodata包获取GADM数据,新数据的几何结构更规范,大概率能解决参数失效问题。示例代码:
library(geodata)
library(sf)
library(tidyverse)

# 获取叙利亚admin0级空间数据
admin0.shp <- gadm(country = "SYR", level = 0, path = tempdir())
admin0.shp <- st_as_sf(admin0.shp)

# 显式指定边框颜色和粗细
ggplot(admin0.shp) +
  geom_sf(color = "black", size = 2, fill = "lightgrey")
  • 显式指定边框颜色:若默认边框颜色与填充色过于接近,会导致size变化难以察觉。明确设置color为高对比色,配合size参数即可直观看到边框粗细变化。

  • 合并多重多边形:如果获取的空间数据是MULTIPOLYGON类型,内部可能存在大量细碎边界,干扰主边框的显示效果。可尝试合并为单一多边形:

# 将多重多边形合并为单一对象
admin0_single <- admin0.shp %>%
  st_union() %>%
  st_sf()

ggplot(admin0_single) +
  geom_sf(size = 2, color = "black", fill = "lightgrey")
  • 更新相关包版本:旧版本的ggplot2或sf可能存在参数兼容问题,更新到最新稳定版本后重新测试size参数是否生效。

内容的提问来源于stack exchange,提问作者Nick Glättli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 01:07:29