用ggmap标记多边形

时间:2018-09-05 22:43:33

标签: r ggplot2 ggmap

我想我必须在这里忽略一些非常简单的事情。

我想将标签应用于一组多边形。具体来说,我正在尝试在少数加利福尼亚州的国会选区放置标签。

我首先获取底图(socal),然后从我所在地区的SPDF(大会)覆盖数据:

socal <- get_map(location = "Riverside, USA", zoom = 8, source = "google", 
                 maptype = "roadmap")

somap <- ggmap(socal) +
  geom_polygon(data = congress, 
               aes(x = long, y = lat, group = group), 
               fill = "#F17521", color = "#1F77B4", alpha = .6)

到目前为止,太好了。

但是我想标记每个多边形,所以我创建了一个新变量:

congress@data$DistrictLabel <- paste("CD", congress@data$DISTRICT, sep = "")

当我尝试将其添加到地图中时...

somap + geom_text(data = congress, aes(x = long, y = lat, label = DistrictLabel))

我收到以下错误:

  

eval(expr,envir,enclos)中的错误:找不到对象'DistrictLabel'

知道我正在忽略一些明显的问题,但是我不知道这是什么!任何帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

对于标签,我通常首先导出多边形质心,并根据这些质心进行绘制。我认为ggplot2没有基于多边形自动定位文本标签的方法。我认为您必须指定它。 像下面这样的东西应该起作用:

library(dplyr)
library(sp)
library(rgeos)
library(ggplot2)

##Add centroid coordinates to your polygon dataset
your_SPDF@data <- cbind(your_SPDF@data,rgeos::gCentroid(your_SPDF,byid = T) %>% coordinates())

ggplot(your_SPDF) +
  geom_polygon(data=your_SPDF,aes(x = long, y = lat, group = group), 
                                fill = "#F17521", color = "#1F77B4", alpha = .6) +
  geom_text(data = your_SPDF@data, aes(x = x, y = y),label = your_SPDF$your_label)