我很困惑让我的数据框在传单中绘制。我有一个合并在一起的shapefile和一个csv。生成的数据帧具有几列,包括long,lat和“percent”。

我可以使用ggplot将其绘制为以下代码:

p <- ggplot() +
    geom_polygon(data = nyc_plotData, aes(x=long, y=lat, group = group,
                                      fill=percent)) +
    geom_polygon(data = county, aes(x=long, y=lat, group = group),
                                      fill=NA, color = "black", size = 0.25) +
    coord_map(xlim = c(-74.26, -73.71), ylim = c(40.49,40.92))

结果是纽约市收入分配的choropleth图:

当我尝试在传单中使用相同的数据框时,出现此错误:



我知道我必须重新格式化我的数据框。我尝试了各种方法来转换为SpatialPolygonDataFrame。例如:
xy <- nyc_plotData[,c(1,2)]
spdf <- SpatialPolygonsDataFrame(coords = xy, data = nyc_plotData,
                               proj4string = CRS("+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"))

给出以下错误:



我显然缺少了一些东西,但是我无法在任何在线位置找到此问题的任何示例。

我非常感谢有关shapefile和在传单中作图的任何提示或建议。

最佳答案

正如其他人指出的(您要注意),您需要将其转换为SpatialPolygonsDataFrame。为了做到这一点,我认为您需要将每个区域转换为Polygon,然后转换为Polygons,再转换为SpatialPolygons,最后转换为SpatialPolygonsDataFrame。以下是用于此的代码。

另一种选择:您从SpatialPolygonsDataFrame开始,然后使用fortify映射到ggplot2。您可以返回原始的SpatialPolygonsDataFrame,然后将数据槽与表格普查数据合并(请注意不要更改行顺序)。

我在这两个选项here上都做了更详细的介绍。

library(dplyr)
library(sp)

polyFunc<-function(groupname, dat){
  poly<-filter(dat, id==groupname) %>%
    select(long, lat)
  return(Polygons(list(Polygon(poly)), groupname))
}


tracts <- distinct(ggtract, id, percent)
tractname <- tracts$id
polygons<-lapply(tractname, function(x) polyFunc(x, dat=ggtract))
sp.polygon<-SpatialPolygons(polygons)
df.polygon<-SpatialPolygonsDataFrame(sp.polygon,
                                     data=data.frame(row.names=tractname, tracts))

关于r - 在传单中绘制shp文件,可在ggplot中使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33084728/

10-12 17:45