R:如何根据数据值为voronoi细分着色?

R:如何根据数据值为voronoi细分着色?,r,plot,colors,voronoi,R,Plot,Colors,Voronoi,我想 从SpatialPointDataFrame在R中创建Voronoi细分确定 获取空间多边形数据帧OK 在我的原始SpatialPointDataFrame中通过值对其着色如何 至于: 我创建并更新了Voronoi tesselation,如下所示: 并在此处更新: 我知道我可以根据库(“dismo”)给它上色: 然而,使用上面的Voronoi函数,在我的voronoipolygons中只有一个变量:“dummy”。但是,我想用变量“z”给多边形上色,这个变量在我的.voro多边形中没有更

我想

  • 从SpatialPointDataFrame在R中创建Voronoi细分确定
  • 获取空间多边形数据帧OK
  • 在我的原始SpatialPointDataFrame中通过值对其着色如何
  • 至于: 我创建并更新了Voronoi tesselation,如下所示: 并在此处更新:

    我知道我可以根据库(“dismo”)给它上色:

    然而,使用上面的Voronoi函数,在我的voronoipolygons中只有一个变量:“dummy”。但是,我想用变量“z”给多边形上色,这个变量在我的.voro多边形中没有更多的内容

    voronoipolygons = function(layer) {
      require(deldir)
      crds = layer@coords
      z = deldir(crds[,1], crds[,2])
      w = tile.list(z)
      polys = vector(mode='list', length=length(w))
      require(sp)
      for (i in seq(along=polys)) {
        pcrds = cbind(w[[i]]$x, w[[i]]$y)
        pcrds = rbind(pcrds, pcrds[1,])
        polys[[i]] = Polygons(list(Polygon(pcrds)), ID=as.character(i))
      }
      SP = SpatialPolygons(polys)
      voronoi = SpatialPolygonsDataFrame(SP, data=data.frame(dummy = seq(length(SP)), 
                                                             row.names=sapply(slot(SP, 'polygons'), 
                                                                                                       function(x) slot(x, 'ID'))))
    }
    
    我的问题是:如何通过
    “z”
    变量为我的
    .voro
    多边形着色,或/和如何直接将其包含在上面的
    voronoipolygons()
    函数中?我不能只是将
    “z”
    变量添加到
    中。voro@data
    ,因为值的顺序已更改。我的R技能还没有那么强。。多谢各位

    虚拟数据:

    x <- c(32.5, 32.1, 33.5, 32.2, 33.0)
    y <- c(-2.2, -3.3, -2.3, -2.9, -3.0)
    z <- c(1, 2, 5, 8, 4)
    
    # make df
    df<-as.data.frame(cbind(x,y,z))
    coordinates(df)<- ~ x + y  #make SPDF 
    
    df.voro <- voronoipolygons(df)   # calculated VORONOI
    
    require('dismo')
    spplot(df.voro, "dummy")   # colorize Polygons
    
    # add z variable to newly created data
    df.voro@data$z<-df$z    ## !!! can't use this, because this change order of values in df !!!
    spplot(df.voro, "z")
    

    x我知道了!!如何修改Voronoi函数

    我需要首先从data.frame中读取my.variable:my.variable=
    layer@data[,1]
    然后将其作为:
    y.data=my.variable
    添加到我的SP对象中

    voronoipolygons2 = function(layer) {
      require(deldir)
      crds = layer@coords
      z = deldir(crds[,1], crds[,2])
      w = tile.list(z)
      my.variable = layer@data[,1]   ## HERE
      polys = vector(mode='list', length=length(w))
      require(sp)
      for (i in seq(along=polys)) {
        pcrds = cbind(w[[i]]$x, w[[i]]$y)
        pcrds = rbind(pcrds, pcrds[1,])
        polys[[i]] = Polygons(list(Polygon(pcrds)), ID=as.character(i))
      }
      SP = SpatialPolygons(polys)
      voronoi = SpatialPolygonsDataFrame(SP, data=data.frame(dummy = seq(length(SP)), 
                                                             my.data = my.variable, # HERE add new column to my voronoi data 
                                                             row.names=sapply(slot(SP, 'polygons'), 
                                                                              function(x) slot(x, 'ID'))))
    }
    
    通过修改的voronoi函数创建voronoi细分多边形:

    df.voro2 <- voronoipolygons2(df)  
    
    以及它们与voronoi1数据的不同之处

    > df.voro@data
      dummy
    1     1
    2     2
    3     3
    4     4
    5     5
    
    在一张图纸上显示两个SPP批次

    require(gridExtra)
    grid.arrange(spplot(df.voro, "dummy", xlab = "x", ylab = "y", main = "original" ),
                 spplot(df.voro2, "my.data", xlab = "x", ylab = "y", main = "z value applied !;-)"))
    
    贸易协定(AAA;)

    require(gridExtra)
    grid.arrange(spplot(df.voro, "dummy", xlab = "x", ylab = "y", main = "original" ),
                 spplot(df.voro2, "my.data", xlab = "x", ylab = "y", main = "z value applied !;-)"))