Loading...
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.
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.
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);
The layout
configuration item can specify the graph's layout algorithm, for example:
{layout: {// Specify the layout algorithm to usetype: 'force',// Configuration items for the layout algorithmgravity: 10// ...}}
You can also use graph.setLayout
to update the layout configuration after the graph is instantiated.
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:
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,// ...}}
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 configurationslayout: {type: 'fruchterman-wasm',threads,// ... other configurations},});
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 configurationslayout: {type: 'fruchterman-gpu',// ... other configurations},});
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:
If the built-in layout algorithms cannot meet your needs, you can customize layout algorithms. For details, please refer to Custom Layout.