Description Usage Arguments Details Value Author(s) References See Also Examples

Functions return a graph object containing a list with the vertex
coordinates and the to and from indices defining the edges. Some/all of these functions assume that the coordinates are not exactly regularly spaced. The helper
function `graph2nb`

converts a graph
object into a neighbour list. The plot functions plot the graph objects.

1 2 3 4 5 6 7 8 9 | ```
gabrielneigh(coords, nnmult=3)
relativeneigh(coords, nnmult=3)
soi.graph(tri.nb, coords, quadsegs=10)
graph2nb(gob, row.names=NULL,sym=FALSE)
## S3 method for class 'Gabriel'
plot(x, show.points=FALSE, add=FALSE, linecol=par(col), ...)
## S3 method for class 'relative'
plot(x, show.points=FALSE, add=FALSE, linecol=par(col),...)
``` |

`coords` |
matrix of region point coordinates |

`nnmult` |
scaling factor for memory allocation, default 3; if higher values are required, the function will exit with an error; example below thanks to Dan Putler |

`tri.nb` |
a neighbor list created from tri2nb |

`quadsegs` |
number of line segments making a quarter circle buffer, see |

`gob` |
a graph object created from any of the graph funtions |

`row.names` |
character vector of region ids to be added to the
neighbours list as attribute |

`sym` |
a logical argument indicating whether or not neighbors should be symetric (if i->j then j->i) |

`x` |
object to be plotted |

`show.points` |
(logical) add points to plot |

`add` |
(logical) add to existing plot |

`linecol` |
edge plotting colour |

`...` |
further graphical parameters as in |

The graph functions produce graphs on a 2d point set that are all subgraphs of the Delaunay triangulation. The relative neighbor graph is defined by the relation, x and y are neighbors if

*d(x,y) <= min(max(d(x,z),d(y,z))| z in S)*

where d() is the distance, S is the set of points and z is an arbitrary point in S. The Gabriel graph is a subgraph of the delaunay triangulation and has the relative neighbor graph as a sub-graph. The relative neighbor graph is defined by the relation x and y are Gabriel neighbors if

*d(x,y) <= min((d(x,z)^2 + d(y,z)^2)^1/2 |z in S)*

where x,y,z and S are as before. The sphere of influence graph is
defined for a finite point set S, let *r_x* be the distance from point x
to its nearest neighbor in S, and *C_x* is the circle centered on x. Then
x and y are SOI neigbors iff *C_x* and *C_y* intersect in at
least 2 places. From 2016-05-31, Computational Geometry in C code replaced by calls to functions in RANN and rgeos; with a large `quadsegs=`

argument, the behaviour of the function is the same, otherwise buffer intersections only closely approximate the original function.

See `card`

for details of “nb” objects.

A list of class `Graph`

withte following elements

`np` |
number of input points |

`from` |
array of origin ids |

`to` |
array of destination ids |

`nedges` |
number of edges in graph |

`x` |
input x coordinates |

`y` |
input y coordinates |

The helper functions return an `nb`

object with a list of integer
vectors containing neighbour region number ids.

Nicholas Lewin-Koh [email protected]

Matula, D. W. and Sokal R. R. 1980, Properties of Gabriel graphs relevant to geographic variation research and the clustering of points in the plane, Geographic Analysis, 12(3), pp. 205-222.

Toussaint, G. T. 1980, The relative neighborhood graph of a finite planar set, Pattern Recognition, 12(4), pp. 261-268.

Kirkpatrick, D. G. and Radke, J. D. 1985, A framework for computational morphology. In Computational Geometry, Ed. G. T. Toussaint, North Holland.

`knearneigh`

, `dnearneigh`

,
`knn2nb`

, `card`

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | ```
if (require(rgdal, quietly=TRUE)) {
example(columbus, package="spData")
coords <- coordinates(columbus)
par(mfrow=c(2,2))
col.tri.nb<-tri2nb(coords)
col.gab.nb<-graph2nb(gabrielneigh(coords), sym=TRUE)
col.rel.nb<- graph2nb(relativeneigh(coords), sym=TRUE)
plot(columbus, border="grey")
plot(col.tri.nb,coords,add=TRUE)
title(main="Delaunay Triangulation")
plot(columbus, border="grey")
plot(col.gab.nb, coords, add=TRUE)
title(main="Gabriel Graph")
plot(columbus, border="grey")
plot(col.rel.nb, coords, add=TRUE)
title(main="Relative Neighbor Graph")
plot(columbus, border="grey")
if (require(rgeos, quietly=TRUE) && require(RANN, quietly=TRUE)) {
col.soi.nb<- graph2nb(soi.graph(col.tri.nb,coords), sym=TRUE)
plot(col.soi.nb, coords, add=TRUE)
title(main="Sphere of Influence Graph")
}
par(mfrow=c(1,1))
dx <- rep(0.25*0:4,5)
dy <- c(rep(0,5),rep(0.25,5),rep(0.5,5), rep(0.75,5),rep(1,5))
m <- cbind(c(dx, dx, 3+dx, 3+dx), c(dy, 3+dy, dy, 3+dy))
try(res <- gabrielneigh(m))
res <- gabrielneigh(m, nnmult=4)
summary(graph2nb(res))
grd <- as.matrix(expand.grid(x=1:5, y=1:5)) #gridded data
r2 <- gabrielneigh(grd)
set.seed(1)
grd1 <- as.matrix(expand.grid(x=1:5, y=1:5)) + matrix(runif(50, .0001, .0006), nrow=25)
r3 <- gabrielneigh(grd1)
opar <- par(mfrow=c(1,2))
plot(r2, show=TRUE, linecol=2)
plot(r3, show=TRUE, linecol=2)
par(opar)
}
``` |

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.