gplot.layout {sna}R Documentation

Vertex Layout Functions for gplot

Description

Various functions which generate vertex layouts for the gplot visualization routine.

Usage

gplot.layout.adj(d, layout.par)
gplot.layout.circle(d, layout.par)
gplot.layout.circrand(d, layout.par)
gplot.layout.eigen(d, layout.par)
gplot.layout.geodist(d, layout.par)
gplot.layout.mds(d, layout.par)
gplot.layout.princoord(d, layout.par)
gplot.layout.random(d, layout.par)
gplot.layout.rmds(d, layout.par)
gplot.layout.segeo(d, layout.par)
gplot.layout.seham(d, layout.par)
gplot.layout.spring(d, layout.par)
gplot.layout.springrepulse(d, layout.par)

Arguments

d an adjacency matrix, as passed by gplot.
layout.par a list of parameters.

Details

Vertex layouts for network visualization pose a difficult problem – there is no single, ``good'' layout algorithm, and many different approaches may be valuable under different circumstances. With this in mind, gplot allows for the use of arbitrary vertex layout algorithms via the gplot.layout.* family of routines. When called, gplot searches for a graph.layout function whose third name matches its mode argument (see gplot help for more information); this function is then used to generate the layout for the resulting plot. In addition to the routines documented here, users may add their own layout functions as needed. The requirements for a graph.layout function are as follows:

  1. the first argument, d, must be the (dichotomous) graph adjacency matrix;
  2. the second argument, layout.par, must be a list of parameters (or NULL, if no parameters are specified); and
  3. the return value must be a real matrix of dimension c(2,NROW(d)), whose rows contain the vertex coordinates.

Other than this, anything goes. (In particular, note that layout.par could be used to pass additional matrices, if needed.)

The graph.layout functions currently supplied by default are as follows:

circle
This function places vertices uniformly in a circle; it takes no arguments.
eigen
This function places vertices based on the eigenstructure of the adjacency matrix. It takes the following arguments:
layout.par$var
This argument controls the matrix to be used for the eigenanalysis. "symupper", "symlower", "symstrong", "symweak" invoke symmetrize on d with the respective symmetrizing rule. "user" indicates a user-supplied matrix (see below), while "raw" indicates that d should be used as-is. (Defaults to "raw".)
layout.par$evsel
If "first", the first two eigenvectors are used; if "size", the two eigenvectors whose eigenvalues have the largest magnitude are used instead. Note that only the real portion of the associated eigenvectors is used. (Defaults to "first".)
layout.par$mat
If layout.par\$var=="user", this matrix is used for the eigenanalysis. (No default.)
mds
This function places vertices based on a metric multidimensional scaling of a specified distance matrix. It takes the following arguments:
layout.par$var
This argument controls the raw variable matrix to be used for the subsequent distance calculation and scaling. "rowcol", "row", and "col" indicate that the rows and columns (concatenated), rows, or columns (respectively) of d should be used. "rcsum" and "rcdiff" result in the sum or difference of d and its transpose being employed. "invadj" indicates that max{d}-d should be used, while "geodist" uses geodist to generate a matrix of geodesic distances from d. Alternately, an arbitrary matrix can be provided using "user". (Defaults to "rowcol".)
layout.par$dist
The distance function to be calculated on the rows of the variable matrix. This must be one of the method parameters to \list{dist} ("euclidean", "maximum", "manhattan", or "canberra"), or else "none". In the latter case, no distance function is calculated, and the matrix in question must be square (with dimension dim(d)) for the routine to work properly. (Defaults to "euclidean".)
layout.par$exp
The power to which distances should be raised prior to scaling. (Defaults to 2.)
layout.par$vm
If layout.par\$var=="user", this matrix is used for the distance calculation. (No default.)

Note: the following layout functions are based on mds:

adj
scaling of the raw adjacency matrix, treated as similarities (using "invadj").
geodist
scaling of the matrix of geodesic distances.
rmds
euclidean scaling of the rows of d.
segeo
scaling of the squared euclidean distances between row-wise geodesic distances (i.e., approximate structural equivalence).
seham
scaling of the Hamming distance between rows/columns of d (i.e., another approximate structural equivalence scaling).
princoord
This function places vertices based on the eigenstructure of a given correlation/covariance matrix. It takes the following arguments:
layout.par$var
The matrix of variables to be used for the correlation/covariance calculation. "rowcol", "col", and "row" indicate that the rows/cols, columns, or rows (respectively) of d should be employed. "rcsum" "rcdiff" result in the sum or difference of d and t(d) being used. "user" allows for an arbitrary variable matrix to be supplied. (Defaults to "rowcol".)
layout.par$cor
Should the correlation matrix (rather than the covariance matrix) be used? (Defaults to TRUE.)
layout.par$vm
If layout.par\$var=="user", this matrix is used for the correlation/covariance calculation. (No default.)
random
This function places vertices randomly. It takes the following argument:
layout.par$dist
The distribution to be used for vertex placement. Currently, the options are "unif" (for uniform distribution on the square), "uniang" (for a ``gaussian donut'' configuration), and "normal" (for a straight Gaussian distribution). (Defaults to "unif".)

Note: circrand, which is a frontend to the "uniang" option, is based on this function.

spring
This function places vertices using a spring embedder. It takes the following arguments:
layout.par$mass
The vertex mass (in ``quasi-kilograms''). (Defaults to 0.1.)
layout.par$equil
The equilibrium spring extension (in ``quasi-meters''). (Defaults to 1.)
layout.par$k
The spring coefficient (in ``quasi-Newtons per quasi-meter''). (Defaults to 0.001.)
layout.par$repeqdis
The point at which repulsion (if employed) balances out the spring extension force (in ``quasi-meters''). (Defaults to 0.1.)
layout.par$kfr
The base coefficient of kinetic friction (in ``quasi-Newton quasi-kilograms''). (Defaults to 0.01.)
layout.par$repulse
Should repulsion be used? (Defaults to FALSE.)

Note: springrepulse is a frontend to spring, with repulsion turned on.

Value

A matrix whose rows contain the x,y coordinates of the vertices of d.

Author(s)

Carter T. Butts buttsc@uci.edu

See Also

gplot, cmdscale, eigen

Examples






[Package Contents]