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

使用ggplot2绘制sf多边形:变量'test'为何为矩阵?

解决sf对象中矩阵类型变量的绘图问题

嘿,别担心,你遇到的情况其实很常见,不是操作错误——st_as_sf()在转换SpatialPolygonsDataFrame时,会原封不动保留原数据里的所有属性格式,包括矩阵类型的列。这类矩阵列通常是原空间数据里存储的多值属性,直接用在ggplot2的geom_sf()里肯定会出问题,因为它需要的是单值向量。

下面是具体的解决步骤:

1. 先确认矩阵的结构

先看看test矩阵到底有几列,方便后续处理:

str(wards$test)

2. 把矩阵转成可用的格式

根据矩阵的列数,有两种处理方式:

  • 如果是单列矩阵:直接转成向量就好
wards$test <- as.vector(wards$test)
  • 如果是多列矩阵:把每一列拆成单独的列,方便后续绘图时选择
# 示例:假设矩阵有2列,分别命名为test_1和test_2
wards$test_1 <- wards$test[, 1]
wards$test_2 <- wards$test[, 2]

3. 正常绘制sf地图

处理完后,就可以用ggplot2正常绘图了,比如:

library(ggplot2)
ggplot(wards) +
  geom_sf(aes(fill = test)) + # 用转换后的向量列
  scale_fill_viridis_c() # 可选,添加好看的颜色映射

这样就能顺利绘制带填充的空间地图啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:19:56