Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 用ggmap标记多边形_R_Ggplot2_Ggmap - Fatal编程技术网

R 用ggmap标记多边形

R 用ggmap标记多边形,r,ggplot2,ggmap,R,Ggplot2,Ggmap,我想我一定忽略了一些非常简单的事情 我想对一组多边形应用标签。具体来说,我正试图在加利福尼亚州的几个国会选区贴上标签 我首先获取基本地图(socal)并将来自我所在地区的SPDF(国会)的数据覆盖在上面: 我得到以下错误: eval(expr、envir、enclose)中出错:找不到对象“DistrictLabel” 我知道我忽略了一些明显的东西,但我不知道它是什么!任何帮助都将不胜感激 谢谢 对于标签,我通常首先导出多边形质心,然后根据这些质心进行打印。我认为ggplot2没有任何基于多边形

我想我一定忽略了一些非常简单的事情

我想对一组多边形应用标签。具体来说,我正试图在加利福尼亚州的几个国会选区贴上标签

我首先获取基本地图(socal)并将来自我所在地区的SPDF(国会)的数据覆盖在上面:

我得到以下错误:

eval(expr、envir、enclose)中出错:找不到对象“DistrictLabel”

我知道我忽略了一些明显的东西,但我不知道它是什么!任何帮助都将不胜感激


谢谢

对于标签,我通常首先导出多边形质心,然后根据这些质心进行打印。我认为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)