使用 ggmap 标记多边形
Labeling polygons with ggmap
我想我一定是忽略了一些非常简单的东西。
我想将标签应用于一组多边形。具体来说,我正在尝试在少数几个加利福尼亚州国会选区放置标签。
我首先获取底图(社会)并将来自我所在地区的 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))
我收到以下错误:
Error in eval(expr, envir, enclos) : object 'DistrictLabel' not found
我知道我忽略了一些明显的东西,但我不知道它是什么!任何帮助将不胜感激。
谢谢!
对于标签,我通常先导出多边形质心,然后根据这些进行绘图。我不认为 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)
我想我一定是忽略了一些非常简单的东西。
我想将标签应用于一组多边形。具体来说,我正在尝试在少数几个加利福尼亚州国会选区放置标签。
我首先获取底图(社会)并将来自我所在地区的 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))
我收到以下错误:
Error in eval(expr, envir, enclos) : object 'DistrictLabel' not found
我知道我忽略了一些明显的东西,但我不知道它是什么!任何帮助将不胜感激。
谢谢!
对于标签,我通常先导出多边形质心,然后根据这些进行绘图。我不认为 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)