# graph.adjacency

From igraph v0.5.2-2
by Gabor Csardi

##### Create graphs from adjacency matrices

`graph.adjacency`

is a flexible function for creating
`igraph`

graphs from adjacency matrices.

- Keywords
- graphs

##### Usage

```
graph.adjacency(adjmatrix, mode=c("directed", "undirected", "max",
"min", "upper", "lower", "plus"), weighted=NULL, diag=TRUE,
add.colnames=NULL, add.rownames=NA)
```

##### Arguments

- adjmatrix
- A square adjacency matrix. From igraph version 0.5.1
this can be a sparse matrix created with the
`Matrix`

package. - mode
- Character scalar, specifies how igraph should interpret the supplied
matrix. See also the
`weighted`

argument, the interpretation depends on that too. Possible values are:`directed`

,`undirected`

,`upper<`

- weighted
- This argument specifies whether to create a weighted
graph from an adjacency matrix. If it is
`NULL`

then an unweighted graph is created and the elements of the adjacency matrix gives the number of edges between the vertices. If it - diag
- Logical scalar, whether to include the diagonal of the
matrix in the calculation. If this is
`FALSE`

then the diagonal is zero-d out first. - add.colnames
- Character scalar, whether to add the column names as
vertex attributes. If it is
(the default) then, if present, column names are added as vertex attribute`NULL`

name . If`NA`

- add.rownames
- Character scalar, whether to add the row names as
vertex attributes. Possible values the same as the previous
argument. By default row names are not added. If
and`add.rownames`

`add.colnames`

##### Details

`graph.adjacency`

creates a graph from an adjacency matrix.

The order of the vertices are preserved, i.e. the vertex corresponding to the first row will be vertex 0 in the graph, etc.

`graph.adjacency`

operates in two main modes, depending on the
`weighted`

argument.

If this argument is `NULL`

then an unweighted graph is
created and an element of the adjacency matrix gives the number
of edges to create between the two corresponding vertices.
The details depend on the value of the `mode`

argument:

`directed`

`undirected`

`max`

,
for convenience. Note that it is *not*checked whether the matrix is symmetric.}

`max`

`max(A(i,j), A(j,i))`

gives the number of edges.}
`upper`

`lower`

`min`

`min(A(i,j), A(j,i))`

edges between vertex `i`

and
`j`

.}
`plus`

`A(i,j)+A(j,i)`

edges between vertex `i`

and
`j`

.}
##### Value

- An igraph graph object.

##### concept

- Adjacency matrix
- Sparse matrix

##### code

`A(i,j)+A(j,i)`

##### itemize

`directed`

##### item

`undirected`

`max`

`upper`

`lower`

`min`

`plus`

##### See Also

graph and `graph.formula`

for
other ways to create graphs.

##### Examples

```
adjm <- matrix(sample(0:1, 100, replace=TRUE, prob=c(0.9,0.1)), nc=10)
g1 <- graph.adjacency( adjm )
adjm <- matrix(sample(0:5, 100, replace=TRUE,
prob=c(0.9,0.02,0.02,0.02,0.02,0.02)), nc=10)
g2 <- graph.adjacency(adjm, weighted=TRUE)
E(g2)$weight
## various modes for weighted graphs, with some tests
nzs <- function(x) sort(x [x!=0])
adjm <- matrix(runif(100), 10)
adjm[ adjm<0.5 ] <- 0
g3 <- graph.adjacency((adjm + t(adjm))/2, weighted=TRUE,
mode="undirected")
g4 <- graph.adjacency(adjm, weighted=TRUE, mode="max")
all(nzs(pmax(adjm, t(adjm))[upper.tri(adjm)]) == sort(E(g4)$weight))
g5 <- graph.adjacency(adjm, weighted=TRUE, mode="min")
all(nzs(pmin(adjm, t(adjm))[upper.tri(adjm)]) == sort(E(g5)$weight))
g6 <- graph.adjacency(adjm, weighted=TRUE, mode="upper")
all(nzs(adjm[upper.tri(adjm)]) == sort(E(g6)$weight))
g7 <- graph.adjacency(adjm, weighted=TRUE, mode="lower")
all(nzs(adjm[lower.tri(adjm)]) == sort(E(g7)$weight))
g8 <- graph.adjacency(adjm, weighted=TRUE, mode="plus")
d2 <- function(x) { diag(x) <- diag(x)/2; x }
all(nzs((d2(adjm+t(adjm)))[lower.tri(adjm)]) == sort(E(g8)$weight))
g9 <- graph.adjacency(adjm, weighted=TRUE, mode="plus", diag=FALSE)
d0 <- function(x) { diag(x) <- 0 }
all(nzs((d0(adjm+t(adjm)))[lower.tri(adjm)]) == sort(E(g9)$weight))
## row/column names
rownames(adjm) <- sample(letters, nrow(adjm))
colnames(adjm) <- seq(ncol(adjm))
g10 <- graph.adjacency(adjm, weighted=TRUE, add.rownames="code")
summary(g10)
```

*Documentation reproduced from package igraph, version 0.5.2-2, License: GPL (>= 2)*

### Community examples

Looks like there are no examples yet.