如何使用spplot
或ggplot
生成以下图表。我尝试了两种方式,但遗憾的是并没有在任何方面占上风。
我面临的问题与适当的在地图上添加点有关。
您需要重现问题所需的所有必要数据(.shp,.prj,.dbf,.shx
)here
我的代码如下:
library(sp)
library(maptools)
library(RColorBrewer)
germK <- readShapePoly("C:/Users/XYZ/Dropbox/R Skripts/PolygonG/vg250_krs.shp")
germK <- germK[germK@data$GF==4,]
germK@data$EWZ2 <- cut(germK@data$EWZ, breaks=quantile(germK@data$EWZ, 1:10/10))
germK@data$EWZ <- germK@data$EWZ2
mypalette <- rev(brewer.pal(9, "RdYlGn"))
pts1 <- list("sp.points", germK, pch = 21,lwd=2,cex=sample(1:412,412)/200, col = "black")
pts2 <- list("sp.points", germK, pch = 21,lwd=2,cex=sample(1:412,412)/200, col = "black")
p.layout <- list(pts1,pts2)
spplot(germK,zcol=c("EWZ","EWZ2"), sp.layout = p.layout, col.regions=mypalette)
通过执行上面的代码行得到的结果是:
来自pts1
的点必须在第一张地图中绘制,并且pts2
中的点应分别在第二张地图上描绘。在我的例子中,你可以看到两个地图都存在两个点。知道如何解决这个问题吗?
最近,我找到了一种正确描绘点的方法,但是这样标题就会消失:
p1 <- spplot(germK,zcol="EWZ", sp.layout = pts1, col.regions=mypalette,
names.attr="X")
p2 <- spplot(germK,zcol="EWZ", sp.layout=pts2, col.regions=mypalette,
names.attr="Y")
p3 <- c(p1,p2, layout=c(2,1))
p3
在这部分代码之后,我得到了理想的外观,这不是很漂亮但可以接受。 任何帮助将高度 appriciated!
答案 0 :(得分:1)
我认为你可以使用which
参数:
pts1 <- list("sp.points", germK, pch = 21,lwd=2,cex=sample(1:412,412)/200, col = "black", which = 1)
pts2 <- list("sp.points", germK, pch = 21,lwd=2,cex=sample(1:412,412)/200, col = "black", which = 2)
spplot(germK,zcol=c("EWZ","EWZ2"), sp.layout = list(pts1, pts2), col.regions=mypalette)