Use this if you are using igraph from R
A bipartite graph is projected into two one-mode networks
bipartite_projection( graph, types = NULL, multiplicity = TRUE, probe1 = NULL, which = c("both", "true", "false"), remove.type = TRUE )
graph |
The input graph. It can be directed, but edge directions are ignored during the computation. |
types |
An optional vertex type vector to use instead of the
‘ |
multiplicity |
If |
probe1 |
This argument can be used to specify the order of the
projections in the resulting list. If given, then it is considered as a
vertex id (or a symbolic vertex name); the projection containing this vertex
will be the first one in the result list. This argument is ignored if only
one projection is requested in argument |
which |
A character scalar to specify which projection(s) to calculate. The default is to calculate both. |
remove.type |
Logical scalar, whether to remove the |
Bipartite graphs have a type
vertex attribute in igraph, this is
boolean and FALSE
for the vertices of the first kind and TRUE
for vertices of the second kind.
bipartite_projection_size
calculates the number of vertices and edges
in the two projections of the bipartite graphs, without calculating the
projections themselves. This is useful to check how much memory the
projections would need if you have a large bipartite graph.
bipartite_projection
calculates the actual projections. You can use
the probe1
argument to specify the order of the projections in the
result. By default vertex type FALSE
is the first and TRUE
is
the second.
bipartite_projection
keeps vertex attributes.
A list of two undirected graphs. See details above.
Gabor Csardi csardi.gabor@gmail.com
## Projection of a full bipartite graph is a full graph g <- make_full_bipartite_graph(10,5) proj <- bipartite_projection(g) graph.isomorphic(proj[[1]], make_full_graph(10)) graph.isomorphic(proj[[2]], make_full_graph(5)) ## The projection keeps the vertex attributes M <- matrix(0, nrow=5, ncol=3) rownames(M) <- c("Alice", "Bob", "Cecil", "Dan", "Ethel") colnames(M) <- c("Party", "Skiing", "Badminton") M[] <- sample(0:1, length(M), replace=TRUE) M g2 <- graph_from_incidence_matrix(M) g2$name <- "Event network" proj2 <- bipartite_projection(g2) print(proj2[[1]], g=TRUE, e=TRUE) print(proj2[[2]], g=TRUE, e=TRUE)