填充多边形没有工作
问题描述:
下面的代码可以很好地用于绘制多边形填充多边形没有工作
SP <- SpatialPolygons(spd)
centroids <- coordinates(SP)
x <- centroids[,1]
y <- centroids[,2]
SP1 <- SpatialPolygonsDataFrame(SP, data = data.frame(x = x, y = y, z = z, row.names = row.names(SP)))
ggplot(data = SP1, aes(x = long, y = lat, group = group)) + geom_path()
相反,如果我改变代码的最后两行基于某些值向量它不工作,以填补这些多边形:
数据源:https://www.google.com/maps/d/viewer?mid=1mf9TQY3bocarO4SaIXAtco_C1LE&hl=en_US
penetration <- runif(n = length(SP), min = 1, max = 10)
SP1 <- SpatialPolygonsDataFrame(SP, data = data.frame(x = x, y = y, z = z, value = penetration, row.names = row.names(SP)))
ggplot(data = SP1, aes(x = long, y = lat, group = group)) + geom_polygon(aes(fill=SP1$value))
SPD与从下面的链接数据来创建
我再提取坐标从KML文件......这是遂成多边形的列表,以便我可以使用一些绘图功能绘制...
tkml <- getKMLcoordinates(kmlfile="Pune all Electoral Wards.kml", ignoreAltitude=T)
len <-length(tkml)
del <- NA
for(i in 1:len)
{
if(length(tkml[[i]]) == 2)
del <- c(del, i)
}
del <- del[-1]
tkmlCleaned <- tkml[!tkml %in% tkml[del]]
size <- length(tkmlCleaned)
sr <- vector(mode = "list", length = size)
srs <- vector(mode = "list", length = size)
spd <- list()
for(j in 1:length(sr))
{
sr[[j]] <- Polygon(tkmlCleaned[[j]])
srs[[j]] <- Polygons(list(sr[[j]]), j)
spd <- c(srs[[j]], spd)
}
答
我发现我的方式合并了多边形使用Polygon数据填充数据与ggplot的数据格式不兼容。所以,下面的代码没有工作
SP1 <- SpatialPolygonsDataFrame(SP, data = data.frame(x = x, y = y, z = z, value = penetration, row.names = row.names(SP)))
首先,我们需要从GGPLOT2库使用Fortify的命令
SP1 <- SpatialPolygonsDataFrame(SP, data = data.frame(x = x, y = y, z = z, row.names = row.names(SP)))
abc <- fortify(SP1)
音符数据如何被当设防命令的应用堆叠成LAT ,long,id,group等栏目。
id列来自Polygons命令,其中每个Polygon被分配一个id,如下面的代码所示。在多边形功能的第二个参数是用于ID
for(j in 1:length(sr))
{
sr[[j]] <- Polygon(tkmlCleaned[[j]])
srs[[j]] <- Polygons(list(sr[[j]]), j)
spd <- c(srs[[j]], spd)
}
要在某种程度上是由ggplot可读我所使用的函数INNER_JOIN从dplyr库加入数据。 请注意,dplyr软件包不适用于R 3.1.0,我已更新至最新版本。
cde <- inner_join(abc, wardDensity1, by = "id")
渗透通过合并映射针对ID当我们使用INNER_JOIN功能,结果是ggplot可读
wardDensity包含病房
的ID(在这种情况下是选举病区名称)和人口baseHeatMap <- ggplot(data = cde, aes(long , lat, group = group, fill = penetration)) + geom_polygon(color = "black")
什么是'spd'?你可以添加一个数据集来使其具有可重现性吗? – steveb
因为我不习惯发布堆栈溢出,请不要介意格式化错误 – Aditya
最好使用'dput'提供数据。所以为了得到'spd',你可以做下面的'dput(spd)' – steveb