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

使用ggplot2绘制空间对象时Shapefile读取异常问题

解决ggplot2绘制SHP文件多边形异常的问题

问题根源

你直接将sp对象转为普通data.frame后调用的shape_x$LON和shape_x$LAT是多边形的中心坐标,并非构成多边形边界的顶点坐标,因此geom_polygon无法正确识别并绘制完整的多边形。

方法1:用fortify()处理sp对象(适配旧版rgdal)

  1. 加载依赖包:
library(rgdal)
library(ggplot2)
  1. 读取SHP文件(替换为你的文件路径):
shape_x <- readOGR(dsn = "存放SHP的文件夹路径", layer = "TM_WORLD_BORDERS_SIMPL-0.3")
  1. 将sp对象转换为ggplot兼容的data.frame(包含顶点坐标和分组信息):
shape_df <- fortify(shape_x)
  1. 用ggplot绘制多边形:
ggplot() +
  geom_polygon(data = shape_df, aes(x = long, y = lat, group = group),
               fill = "white", colour = "black") +
  coord_map() # 修正地图投影,避免图形拉伸变形

方法2:使用sf包(推荐,替代rgdal)

rgdal已停止维护,sf是当前处理地理空间数据的标准工具,使用更简便:

  1. 加载sf包:
library(sf)
library(ggplot2)
  1. 读取SHP文件:
shape_sf <- st_read("你的SHP文件完整路径/TM_WORLD_BORDERS_SIMPL-0.3.shp")
  1. 直接用geom_sf绘图:
ggplot() +
  geom_sf(data = shape_sf, fill = "white", colour = "black")

geom_sf会自动识别sf对象的几何信息,无需手动指定坐标和分组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 02:32:40