R 用ggmap标记多边形
我想我一定忽略了一些非常简单的事情 我想对一组多边形应用标签。具体来说,我正试图在加利福尼亚州的几个国会选区贴上标签 我首先获取基本地图(socal)并将来自我所在地区的SPDF(国会)的数据覆盖在上面: 我得到以下错误: eval(expr、envir、enclose)中出错:找不到对象“DistrictLabel” 我知道我忽略了一些明显的东西,但我不知道它是什么!任何帮助都将不胜感激R 用ggmap标记多边形,r,ggplot2,ggmap,R,Ggplot2,Ggmap,我想我一定忽略了一些非常简单的事情 我想对一组多边形应用标签。具体来说,我正试图在加利福尼亚州的几个国会选区贴上标签 我首先获取基本地图(socal)并将来自我所在地区的SPDF(国会)的数据覆盖在上面: 我得到以下错误: eval(expr、envir、enclose)中出错:找不到对象“DistrictLabel” 我知道我忽略了一些明显的东西,但我不知道它是什么!任何帮助都将不胜感激 谢谢 对于标签,我通常首先导出多边形质心,然后根据这些质心进行打印。我认为ggplot2没有任何基于多边形
谢谢 对于标签,我通常首先导出多边形质心,然后根据这些质心进行打印。我认为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)
库(dplyr)
图书馆(sp)
图书馆(rgeos)
图书馆(GG2)
##将质心坐标添加到多边形数据集中
你的_SPDF@data%坐标()
ggplot(您的_SPDF)+
几何多边形(数据=你的SPDF,aes(x=长,y=纬度,组=组),
fill=“#F17521”,color=“#1F77B4”,alpha=.6)+
几何图形文本(数据=您的_SPDF@data,aes(x=x,y=y),label=your_SPDF$your_label)
如果不知道您的大会
数据集是什么样子,就很难解决此问题……公平点。感谢您抽出时间回复。我从美国人口普查地图边界文件网站下载了数据。我不确定这是否有帮助,但数据有11个变量。一个是选区,它是指国会选区的编号。我用它来创建我的DistrictLabel。试着发布一小部分可以重现错误的数据。DistrictLabel
是congress@data
,但您正在通过congress
作为data=
的参数,因此aes
无法找到DistrictLabel
。尝试更改为geom\u文本(数据=congress@data,…)
。将你的答案和阿尔特姆·索科洛夫的答案结合起来,就成功了!非常感谢!
congress@data$DistrictLabel <- paste("CD", congress@data$DISTRICT, sep = "")
somap + geom_text(data = congress, aes(x = long, y = lat, label = DistrictLabel))
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)