首页 > 解决方案 > 用 geom_sf、ggplot 标记多边形

问题描述

我正在尝试使用 ggplot2 从空间特征数据框中标记多边形。我试图在“下载一些边界数据:州/县/HUC”标题下复制此处的描述

这是我尝试获取用于 geom_text() 中标签位置的 lat 和 lon 值的代码:

selected_sites <- arc.open(survey_sites)
ss <- arc.select(selected_sites)
ss_shape <- arc.data2sf(ss)
refcode_list <- ss$refcode

ss_shape <- ss_shape %>%
  mutate(lon=map(geometry, ~st_centroid(.x)[[1]]),
         lat=map(geometry, ~st_centroid(.x)[[2]]))

我不断收到以下错误:

mutate_impl(.data, dots) 中的错误:
评估错误:.x不是向量(闭包)。

标签: rggplot2labeldplyrsf

解决方案


自己无法重现错误。可能您没有purrr加载包,因此map正在使用不同的功能。

我想说,由于您的目标是在 中绘制标签geom_text,因此只需使用st_centroid(ss_shape)即可。它将返回您的质心points,您可以将其直接传递给geom_text

例如)

ss_centroids <- st_centroid(ss_shape)
ggplot()+ 
  geom_text(data=ss_centroids,aes(x=X,y=Y,label=name))

推荐阅读