Skip to content

Layout Overview

Overview

Graph layout refers to the process of arranging elements in a graph according to certain rules, such as force-directed layout based on charge elasticity models, grid layout with sequential arrangement, and tree layout based on hierarchical structures.

Layout Types

G6 provides a variety of layout algorithms, allowing users to choose the appropriate one based on their needs:

Among them, CompactBox Layout, Dendrogram Layout, Mindmap Layout, and Indented Layout are types of tree layouts suitable for tree-structured graphs.

Register Layout

You can directly use built-in layouts, but if you want to use other layouts, you need to register them first:

import { register, ExtensionCategory } from '@antv/g6';
import { CustomLayout } from 'package-name/or/path-to-your-custom-layout';

register(ExtensionCategory.LAYOUT, 'custom-layout', CustomLayout);

Configure Layout

The layout configuration item can specify the graph’s layout algorithm, for example:

{
  layout: {
    // Specify the layout algorithm to use
    type: 'force',
    // Configuration items for the layout algorithm
    gravity: 10
    // ...
  }
}

You can also use graph.setLayout to update the layout configuration after the graph is instantiated.

Starting from 5.1, layout docs align their shared fields with @antv/layout. Besides each layout’s own algorithm parameters, you should also pay attention to common options such as width, height, center, enableWorker, node, and edge.

Layout Acceleration

G6 provides accelerated versions for some layout algorithms, including executing layout algorithms in Web Workers, providing WASM versions of layout algorithms, and GPU-accelerated layout algorithms. They can be used as follows:

Execute Layout Algorithms in Web Workers

Except for tree layouts, all built-in layout algorithms in G6 support execution in Web Workers. Simply set enableWorker to true:

{
  layout: {
    type: 'force',
    enableWorker: true,
    // ...
  }
}

Use WASM Version Layout Algorithms

Currently supported WASM version layout algorithms include: Fruchterman Layout, ForceAtlas Layout, Force Layout, Dagre Layout.

First, install @antv/layout-wasm:

npm install @antv/layout-wasm --save

Import and register the layout algorithm:

import { register, Graph, ExtensionCategory } from '@antv/g6';
import { FruchtermanLayout, initThreads, supportsThreads } from '@antv/layout-wasm';

register(ExtensionCategory.LAYOUT, 'fruchterman-wasm', FruchtermanLayout);

Initialize threads:

const supported = await supportsThreads();
const threads = await initThreads(supported);

Initialize the graph and pass in the layout configuration:

const graph = new Graph({
  // ... other configurations
  layout: {
    type: 'fruchterman-wasm',
    threads,
    // ... other configurations
  },
});

Use GPU-Accelerated Layout

Currently supported GPU-accelerated layout algorithms include: Fruchterman Layout, GForce Layout.

First, install @antv/layout-gpu:

npm install @antv/layout-gpu --save

Import and register the layout algorithm:

import { register, Graph, ExtensionCategory } from '@antv/g6';
import { FruchtermanLayout } from '@antv/layout-gpu';

register(ExtensionCategory.LAYOUT, 'fruchterman-gpu', FruchtermanLayout);

Initialize the graph and pass in the layout configuration:

const graph = new Graph({
  // ... other configurations
  layout: {
    type: 'fruchterman-gpu',
    // ... other configurations
  },
});

Execute Layout

Usually, after calling graph.render(), G6 will automatically execute the layout algorithm.

If you need to manually execute the layout algorithm, G6 provides the following APIs:

Custom Layout

If the built-in layout algorithms cannot meet your needs, you can customize layout algorithms. For details, please refer to Custom Layout.

If you are migrating layout configuration from G6 5.0 to 5.1, see Upgrade from 5.0 to 5.1 (Layout).

© Copyright 2026 Ant Group Co., Ltd..备案号:京ICP备15032932号-38
Site search
Documentation and examplesType to start searching

Search documentation, APIs, and examples

↑↓Select↵OpenEscClose