Skip to contents

This is a generic function to apply a layout function to a graph.


layout_(graph, layout, ...)

# S3 method for igraph_layout_spec
print(x, ...)

# S3 method for igraph_layout_modifier
print(x, ...)



The input graph.


The layout specification. It must be a call to a layout specification function.


Further modifiers, see a complete list below. For the print() methods, it is ignored.


The layout specification


The return value of the layout function, usually a two column matrix. For 3D layouts a three column matrix.


There are two ways to calculate graph layouts in igraph. The first way is to call a layout function (they all have prefix layout_() on a graph, to get the vertex coordinates.

The second way (new in igraph 0.8.0), has two steps, and it is more flexible. First you call a layout specification function (the one without the layout_() prefix, and then layout_() (or add_layout_()) to perform the layouting.

The second way is preferred, as it is more flexible. It allows operations before and after the layouting. E.g. using the component_wise() argument, the layout can be calculated separately for each component, and then merged to get the final results.


Modifiers modify how a layout calculation is performed. Currently implemented modifiers:

  • component_wise() calculates the layout separately for each component of the graph, and then merges them.

  • normalize() scales the layout to a square.


g <- make_ring(10) + make_full_graph(5)
coords <- layout_(g, as_star())
plot(g, layout = coords)