# igraph-package

0th

Percentile

##### The igraph package

igraph is a library for network analysis.

##### Introduction

The main goals of the igraph library is to provide a set of data types and functions for 1) pain-free implementation of graph algorithms, 2) fast handling of large graphs, with millions of vertices and edges, 3) allowing rapid prototyping via high level languages like R.

##### Creating graphs

There are many functions in igraph for creating graphs, both deterministic and stochastic; stochastic graph constructors are called games is igraph.

To create small graphs with a given structure probably the graph.formula function is easiest. It uses R's formula interface, its manual page contains many examples. Another option is graph, which takes numeric vertex ids directly. graph.atlas creates graph from the Graph Atlas, graph.famous can create some special graphs.

To create graphs from field data, graph.edgelist, graph.data.frame and graph.adjacency are probably the best choices.

The igraph include some classic random graphs like the Erdos-Renyi GNP and GNM graphs (erdos.renyi.game) and some recent popular models, like preferential attachment (barabasi.game) and the small-world model (watts.strogatz.game).

##### Vertex and edge IDs

Vertices and edges have numerical vertex ids in igraph. Vertex ids are always consecutive and they start with zero. I.e. for a graph with n vertices the vertex ids are between 0 and n-1. If some operation changes the number of vertices in the graphs, e.g. a subgraph is created via subgraph, then the vertices are renumbered to satisfty this criteria.

The same is true for the edges as well, edge ids are always between zero and m-1 where m is the total number of edges in the graph.

It is often desirable to follow vertices along a number of graph operations, and vertex ids don't allow this because of the renumbering. The solution is to assign attributes to the vertices. These are kept by all operations, if possible. See more about attributes in the next section.

##### Attributes

In igraph it is possible to assign attributes to the vertices or edges of a graph, or to the graph itself. igraph provides flexible constructs for selecting a set of vertices or edges based on their attribute values, see get.vertex.attribute and iterators for details.

Some vertex/edge/graph attributes are treated specially. One of them is the name attribute. This is used for printing the graph instead of the numerical ids, if it exists. Other attributes define visualization parameters, see igraph.plotting for details.

Attribute values can be set to any R object, but note that storing the graph in some file formats might result the loss of complex attribute values. All attribute values are preserved if you use save and load to store/retrieve your graphs.

##### Visualization

igraph provides three different ways for visualization. The first is the plot.igraph function. (Actually you don't need to write plot.igraph, plot is enough. This function uses base R graphic and can be used with any R device.

The second function is tkplot, which uses a Tk GUI for basic interactive graph manipulation. (Tk is quite resource hungry, so don't try this for very large graphs.)

The third way requires the rgl package and uses OpenGL. See the rglplot function for the details.

Make sure you read igraph.plotting before you start plotting your graphs.

##### File formats

igraph can handle various graph file formats, usually both for reading and writing. We suggest that you use the GraphML file format for your graphs, except if the graphs are too big. For big graphs a simpler format is recommended. See read.graph and write.graph for details.

##### Further information

The igraph homepage is at http://cneurocvs.rmki.kfki.hu/igraph. See especially the documentation section. Join the igraph-help mailing list if you have questions or comments.

##### Aliases
• igraph-package
• igraph
Documentation reproduced from package igraph, version 0.5.3, License: GPL (>= 2)

### Community examples

Looks like there are no examples yet.