Functions to deal with the result of network community detection

igraph community detection functions return their results as an object from the communities class. This manual page describes the operations of this class.

## S3 method for class 'communities':
print(x, \dots)

## S3 method for class 'communities': length(x) sizes(communities) membership(communities) ## S3 method for class 'communities': modularity(x, \dots) algorithm(communities) crossing(communities, graph)

is.hierarchical(communities, full = FALSE) merges(communities) cutat(communities, no, steps) ## S3 method for class 'communities': as.dendrogram(object, hang=-1, use.modularity=FALSE, \dots) ## S3 method for class 'communities': as.hclust(x, hang = -1, use.modularity = FALSE, \dots) ## S3 method for class 'communities': asPhylo(x, use.modularity=FALSE, \dots) showtrace(communities)


## S3 method for class 'communities': plot(x, y, colbar=rainbow(length(x)), col=colbar[membership(x)], mark.groups=communities(x), edge.color=c("black", "red")[crossing(x,y)+1], ...)

A communities object, the result of an igraph community detection function.
An igraph graph object, corresponding to communities.
Logical scalar, if TRUE, then is.hierarchical only returns TRUE for fully hierarchical algorithms. The leading eigenvector algorithm is hierarchical, it gives a hierarchy of groups, but not
An igraph graph object, corresponding to the communities in x.
Integer scalar, the desired number of communities. If too low or two high, then an error message is given. Exactly one of no and steps must be supplied.
The number of merge operations to perform to produce the communities. Exactly one of no and steps must be supplied.
A vector of colors, in any format that is accepted by the regular R plotting methods. E.g. it may be an integer vector, a character vector of color names, a character vector of RGB colors. This vector gives the color bar for the vertices. The
A vector of colors, in any format that is accepted by the regular R plotting methods. This vector gives the colors of the vertices explicitly.
A list of numeric vectors. The communities can be highlighted using colored polygons. The groups for which the polygons are drawn are given here. The default is to use the groups given by the communities. Supply NULL here if you d
The colors of the edges. By default the edges within communities are colored green and other edges are red.
Numeric scalar indicating how the height of leaves should be computed from the heights of their parents; see plot.hclust.
Logical scalar, whether to use the modularity values to define the height of the branches.
Additional arguments. plot.communities passes these to plot.igraph. The other functions silently ignore them.

Community structure detection algorithms try to find dense subgraphs in directed or undirected graphs, by optimizing some criteria, and usually using heuristics.

igraph implements a number of commmunity detection methods (see them below), all of which return an object of the class communities. Because the community structure detection algorithms are different, communities objects do not always have the same structure. Nevertheless, they have some common operations, these are documented here.

The print generic function is defined for communities, it prints a short summary.

The length generic function call be called on communities and returns the number of communities.

The sizes function returns the community sizes, in the order of their ids. membership gives the division of the vertices, into communities. It returns a numeric vector, one value for each vertex, the id of its community. Community ids start from one. Note that some algorithms calculate the complete (or incomplete) hierarchical structure of the communities, and not just a single partitioning. For these algorithms typically the membership for the highest modularity value is returned, but see also the manual pages of the individual algorithms. modularity gives the modularity score of the partitioning. (See modularity.igraph for details. For algorithms that do not result a single partitioning, the highest modularity value is returned.

algorithm gives the name of the algorithm that was used to calculate the community structure.

crossing returns a logical vector, with one value for each edge, ordered according to the edge ids. The value is TRUE iff the edge connects two different communities, according to the (best) membership vector, as returned by membership().

is.hierarchical checks whether a hierarchical algorithm was used to find the community structure. Some functions only make sense for hierarchical methods (e.g. merges, cutat and as.dendrogram). merges returns the merge matrix for hierarchical methods. An error message is given, if a non-hierarchical method was used to find the community structure. You can check this by calling is.hierarchical on the communities object.

cutat cuts the merge tree of a hierarchical community finding method, at the desired place and returns a membership vector. The desired place can be expressed as the desired number of communities or as the number of merge steps to make. The function gives an error message, if called with a non-hierarchical method.

as.dendrogram converts a hierarchical community structure to a dendrogram object. It only works for hierarchical methods, and gives an error message to others. See dendrogram for details.

as.hclust is similar to as.dendrogram, but converts a hierarchical community structure to a hclust object.

asPhylo converts a hierarchical community structure to a phylo object, you will need the ape package for this. showtrace works (currently) only for communities found by the leading eigenvector method (, and returns a character vector that gives the steps performed by the algorithm while finding the communities.

code.length is defined for the InfoMAP method ( and returns the code length of the partition. It is possibly to call the plot function on communities objects. This will plot the graph (and uses plot.igraph internally), with the communities shown. By default it colores the vertices according to their communities, and also marks the vertex groups corresponding to the communities. It passes additional arguments to plot.igraph, please see that and also igraph.plotting on how to change the plot.


  • print returns the communities object itself, invisibly.

    length returns an integer scalar.

    sizes returns a numeric vector. membership returns a numeric vector, one number for each vertex in the graph that was the input of the community detection. modularity returns a numeric scalar.

    algorithm returns a character scalar.

    crossing returns a logical vector.

    is.hierarchical returns a logical scalar.

    merges returns a two-column numeric matrix.

    cutat returns a numeric vector, the membership vector of the vertices.

    as.dendrogram returns a dendrogram object.

    showtrace returns a character vector.

    code.length returns a numeric scalar for communities found with the InfoMAP method and NULL for other methods. plot for communities objects returns NULL, invisibly.


Community structure

See Also

See dendPlot for plotting community structure dendrograms. See compare.communities for comparing two community structures on the same graph. The different methods for finding communities, they all return a communities object:,,,,,,,

  • communities
  • membership
  • algorithm
  • crossing
  • cutat
  • merges
  • sizes
  • is.hierarchical
  • print.communities
  • plot.communities
  • length.communities
  • modularity.communities
  • as.dendrogram.communities
  • as.hclust.communities
  • asPhylo
  • asPhylo.communities
  • showtrace
  • code.length
karate <- graph.famous("Zachary")
wc <-
plot(wc, karate)
Documentation reproduced from package igraph, version 0.6.5-2, License: GPL (>= 2)

Community examples

Looks like there are no examples yet.