[R] How to create Voronoi-Polygons ?

Roger Koenker roger at ysidro.econ.uiuc.edu
Thu Dec 18 14:45:10 CET 2003


Everything is possible, some things are just more difficult than others.  It is a little
tricky to find the point of intersection of the voronoi edges with the frame of the
diagram.  Your basic request is quite straightforward though.  Here is a function
that plots, by looping through the sites and using voronoi.findvertices() to
get the vertices of the polygons.  In the function fit represents a z coordinate
that indicates the value of a fitted function at each of the sites, -- this may
be irrelevant in your setup.  I hope that it will help:

"plot.voronogram" <-
function (x,y,fit)
{
tm <- tri.mesh(x,y)
xlim <- c(min(tm$x) - 0.1 * diff(range(tm$x)), max(tm$x) + 0.1 * diff(range(tm$x)))
ylim <- c(min(tm$y) - 0.1 * diff(range(tm$y)), max(tm$y) + 0.1 * diff(range(tm$y)))
plot.new()
plot.window(xlim = xlim, ylim = ylim, "")
n <- length(x)
vm <- voronoi.mosaic(x,y)
palette(topo.colors(100))
cfit <- 100*fit
for(i in 1:n){
        vpolygon <- voronoi.findvertices(i,vm)
        if(length(vpolygon)){
                xx <- vm$x[vpolygon]
                yy <- vm$y[vpolygon]
                inhull <- in.convex.hull(tm,xx,yy)
                polygon(xx[inhull],yy[inhull] ,col=cfit[i])
                }
        }
}


url:	www.econ.uiuc.edu/~roger/my.html	Roger Koenker
email	rkoenker at uiuc.edu			Department of Economics
vox: 	217-333-4558				University of Illinois
fax:   	217-244-6678				Champaign, IL 61820

On Thu, 18 Dec 2003, Klemens Barfus wrote:

> Dear List-Members,
> my name is Klemens Barfus and I am quite new to this list and to working
> with R.
> I try to generate Vornoi-Polygons with the Tripack package. I would like to
> have a table with the sites xy and the surrounding nodes of the
> Voronoi-Polygons. The area shall be delimited by a defined rectangle so that the polygons
> at the edge are cut by the rectangle sides.
> Is there a way to do this ? Looking the old list entries I found no help.
> First  using voronoi.mosaic worked fine, but how to get the connection of
> the sites to the surrounding nodes. The other question is what the information
> of the voronoi.findrejectsites() functon is.  For my testdata it showed 3
> sites which ly at the edge, but it should be 6. ...
>
> Thanks for your help in advance !
>
> Klemens
>
>
> --
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>




More information about the R-help mailing list