【问题标题】:sp R package SpatialPolygons-Class plot transparentsp R包SpatialPolygons-Class绘图透明
【发布时间】:2016-08-14 19:32:38
【问题描述】:

我想用透明的填充颜色绘制 SpatialPolygons 类的对象。 SpatialPolygons-Class 帮助页面中的示例略有更改:

# simple example, from vignette("sp"):
Sr1 = Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2)))
Sr2 = Polygon(cbind(c(5,4,2,5),c(2,3,2,2)))
Sr3 = Polygon(cbind(c(4,4,5,10,4),c(5,3,2,5,5)))
Sr4 = Polygon(cbind(c(5,6,6,5,5),c(4,4,3,3,4)), hole = TRUE)

Srs1 = Polygons(list(Sr1), "s1")
Srs2 = Polygons(list(Sr2), "s2")
Srs3 = Polygons(list(Sr3, Sr4), "s3/4")
SpP = SpatialPolygons(list(Srs1,Srs2,Srs3), 1:3)
plot(1,1,type="n",ylim=c(0,10),xlim=c(0,10),xlab="",ylab="",yaxt="n",xaxt="n")
plot(SpP, col = paste0(c("#FF0000","#00FF00","#0000FF"),"55"), pbg="white",add=TRUE)

工作正常。但是,如果我想放大,plot 的 SpatialPolygons-Class 方法不能再处理透明度了:

plot(1,1,type="n",ylim=c(0,7),xlim=c(0,7),xlab="",ylab="",yaxt="n",xaxt="n")
plot(SpP, col = paste0(c("#FF0000","#00FF00","#0000FF"),"55"), pbg="white",add=TRUE)

有没有办法让它工作? (如果可能的话,我想保留经典的plot 功能)

【问题讨论】:

    标签: r plot polygon sp


    【解决方案1】:

    解决问题的一种方法是裁剪多边形。

    c1 <- Polygon(cbind(c(0,7,7,0, 0),c(0,0,7,7,0)))
    c2 <- Polygons(list(c1), "sclip")
    Pclip <- SpatialPolygons(list(c2))
    library(rgeos)
    SpPclip <- gIntersection(SpP, Pclip, byid = T)
    plot(SpPclip, col = paste0(c("#FF0000","#00FF00","#0000FF"),"55"), pbg="white", 
         ylim = c(-1,10), xlim = c(-1,10))
    plot(Pclip, add = T)
    

    输出如下所示:

    【讨论】:

    • 谢谢!那解决了它。注意:要获得与我的示例相同的绘图,必须将 Pclip 多边形扩展为绘图区域的默认 4% 扩展:c1 &lt;- Polygon(cbind(c(-0.28,7.28,7.28,-0.28, -0.28),c(-0.28,-0.28,7.28,7.28,-0.28))) 并无限制地绘图。
    猜你喜欢
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 2011-03-14
    • 2010-11-25
    • 2021-05-30
    • 1970-01-01
    相关资源
    最近更新 更多