| spatgraphs-package {spatgraphs} | R Documentation |
Compute various graph adjacency matrices for 2D and 3D spatial point patterns such as the ppp-objects in R-package 'spatstat'. Also included: plotting graphs, cluster/component computation and visualization and two summaries, connectivity function and clustering function.
| Date: | 2007-10-14 |
| License: | GPL v2 or later |
This package provides the following graph adjacency matrix computations, all handled by the spatgraph()-function:
Graph relation x~y
-------------------------------------------------------------
Geometric ||x-y||<R
Marked geometric ||x-y||<m(x)
Spheres of Influence ||x-y||<d(x)+d(y)
Mark crossing ||x-y||<m(x)+m(y)
Nearest neighbour ||x-y||<d(x)
k-Nearest neighbour x in knn(y)
Mutual k-Nearest x in knn(y) AND y in knn(x) mknn
Radial spanning tree see refs.
Minimum spanning tree see refs.
Gabriel graph see refs.
Class cover catch see refs.
where
||.|| ~ euclidian distance
m(x) ~ mark of x
d(x) ~ the distance to the nearest neighbour of x.
knn(x) ~ the k nearest neighbours set of x
The minimum spanning tree is computed using Prim's algorithm.
Also included are the following functions:
Function name Description
----------------------------------------------------------
plot_graph Plot the graph on top of point pattern
spin3d Little program to animate the rgl-3d image
sg_cluster Compute clustermatrix from adjacency matrix
sg_clusterlist List the clusters in clustermatrix
plot_clusters Plot the clusters
NOTE: As the algorithms currently work on the adjacency matrices the memory requirement is (n^2).
Tuomas Rajala University of Jyvaskyla, Finland tarajala@maths.jyu.fi
Marchette, David J.: Random Graphs for Statistical Pattern Recognition, Wiley 2004.
Spatial point processes in general, see the package 'spatstat'
For Voronoi/Delauney duality, see the package 'tripack'
The package 'rgl' is required for 3D-plotting.
graph_example2d<-function(n=50,k=3,R=0.2)
{
pp2d<-list(x=runif(n),y=runif(n),n=n,window=list(x=c(0,1),y=c(0,1)))
e1<-spatgraph(pp2d,"geometric",pars=list(R=R))
e2<-spatgraph(pp2d,"kmnn",pars=list(k=k))
e3<-spatgraph(pp2d,"MST")
A<-sgcluster(e2)
par(mfrow=c(1,3))
plot(pp2d,main=paste("Geometric,R =",R));plot_graph(pp2d,e1,add=TRUE)
plot_graph(pp2d,e2,main=paste("Mutual k-nn, k =",k))
plot_clusters(pp2d,A,add=TRUE)
plot_graph(pp2d,e3,main="Minimum spanning tree")
};graph_example2d()
graph_example3d<-function(n=200)
{
library(rgl)
w<-c(0,1)
phi<-runif(n,0,pi);tau<-runif(n,0,2*pi);r<-runif(n)^0.33
pp3d<-list(x=r*sin(tau)*cos(phi),y=r*cos(phi)*cos(tau),z=r*cos(phi),n=n,window=list(x=w,y=w,z=w))
e<-spatgraph(pp3d,"RST",pars=list(x=0,y=0,z=0))
plot_graph(pp3d,e,pointsize=2,main="Radial spanning tree",linecolor="plum")
};
graph_example3d()