spectral_layout(G, weight='weight', scale=1, center=None, dim=2)[source]#

Position nodes using the eigenvectors of the graph Laplacian.

Using the unnormalized Laplacian, the layout shows possible clusters of nodes which are an approximation of the ratio cut. If dim is the number of dimensions then the positions are the entries of the dim eigenvectors corresponding to the ascending eigenvalues starting from the second one.

GNetworkX graph or list of nodes

A position will be assigned to every node in G.

weightstring or None optional (default=’weight’)

The edge attribute that holds the numerical value used for the edge weight. If None, then all edge weights are 1.

scalenumber (default: 1)

Scale factor for positions.

centerarray-like or None

Coordinate pair around which to center the layout.


Dimension of layout.


A dictionary of positions keyed by node


Directed graphs will be considered as undirected graphs when positioning the nodes.

For larger graphs (>500 nodes) this will use the SciPy sparse eigenvalue solver (ARPACK).


>>> G = nx.path_graph(4)
>>> pos = nx.spectral_layout(G)