logo

G6

  • Docs
  • API
  • Playground
  • Community
  • Productsantv logo arrow
  • 5.0.47
  • Introduction
  • Data
  • Getting Started
    • Quick Start
    • Installation
    • Integration
      • react
      • vue
      • angular
    • Step-by-step guide
  • Graph
    • Extensions En
    • Graph
    • Options
    • extension
  • Element
    • Element Overview
    • Element State
    • Node
      • Node Overview
      • Build-in Node
        • Common Node Configurations
        • Diamond
        • Donut
        • Ellipse
        • Hexagon
        • Html
        • Image
        • Rect
        • Star
        • Triangle
        • Circle
      • Custom Node
      • Define Nodes with React
    • Edge
      • Edge Overview
      • Build-in Edge
        • Common Edge Configurations
        • Cubic Bezier Curve
        • CubicHorizontal Bezier Curve
        • CubicVertical Bezier Curve
        • Line
        • Polyline
        • Quadratic Bezier Curve
      • Custom Edge
    • Combo
      • Combo Overview
      • Build-in Combo
        • Circle
        • Combo Configuration Options
        • Rect
      • Custom Combo
    • Shape
      • Shape and KeyShape
      • Atomic Shapes and Their Properties
      • Design and Implementation of Composite Shape
  • Layout
    • Layout Overview
    • Build-in Layout
      • 3D Force-Directed Layout
      • AntvDagre Layout
      • Circular Layout
      • ComboCombined Layout
      • Common Layout Configuration Options
      • CompactBox
      • Concentric Layout
      • D3 Force-Directed Layout
      • Dagre Layout
      • Dendrogram Layout
      • Fishbone Layout
      • Force Force-directed Layout
      • ForceAtlas2 Force-directed Layout
      • Fruchterman Force-directed Layout
      • Grid Layout
      • Indented Tree
      • MDS High-dimensional Data Dimensionality Reduction Layout
      • Mindmap Tree
      • Radial Layout
      • Random Layout
      • Snake Layout
    • Custom Layout
  • Behavior
    • Behavior Overview
    • Build-in Behavior
      • AutoAdaptLabel
      • BrushSelect
      • ClickSelect
      • CollapseExpand
      • CreateEdge
      • DragCanvas
      • DragElement
      • DragElementForce
      • FixElementSize
      • FocusElement
      • HoverActivate
      • LassoSelect
      • OptimizeViewportTransform
      • ScrollCanvas
      • ZoomCanvas
    • Custom Behavior
  • Plugin
    • Plugin Overview
    • Build-in Plugin
      • Background
      • BubbleSets
      • Contextmenu
      • EdgeBundling
      • EdgeFilterLens
      • Fisheye
      • Fullscreen
      • GridLine
      • History
      • Hull
      • Legend
      • Minimap
      • Snapline
      • Timebar
      • Toolbar
      • Tooltip
      • Watermark
    • Custom Plugin
  • Transform
    • Data Transformation Overview
    • Build-in Transform
      • MapNodeSize
      • PlaceRadialLabels
      • ProcessParallelEdges
    • Custom Transform
  • Theme
    • Theme Overview
    • Custom Theme
    • Palette
    • Custom Palette
  • Animation
    • Animation Overview
    • Custom Animation
  • Further Reading
    • Event
    • renderer
    • coordinate
    • download-image
    • Using Iconfont
    • Use 3D
    • Bundle Project
  • What's new
    • Feature
    • Upgrade To 5.0
  • FAQ
  • contribute

3D Force-Directed Layout

Previous
Layout Overview
Next
AntvDagre Layout

Resources

Ant Design
Galacea Effects
Umi-React Application Framework
Dumi-Component doc generator
ahooks-React Hooks Library

Community

Ant Financial Experience Tech
seeconfSEE Conf-Experience Tech Conference

Help

GitHub
StackOverflow

more productsMore Productions

Ant DesignAnt Design-Enterprise UI design language
yuqueYuque-Knowledge creation and Sharing tool
EggEgg-Enterprise-class Node development framework
kitchenKitchen-Sketch Tool set
GalaceanGalacean-互动图形解决方案
xtechLiven Experience technology
© Copyright 2025 Ant Group Co., Ltd..备案号:京ICP备15032932号-38

Loading...

Overview

The D3Force3D layout is a 3D extension based on d3-force, which simulates physical forces in three-dimensional space to achieve automatic layout. Compared to 2D layouts, it adds force effects in the Z-axis direction, allowing richer data relationships to be displayed in 3D space.

3D Force-Directed Layout Illustration

Core Concepts

Force System

D3Force3D extends the traditional 2D force-directed layout with the following forces:

  • 3D Centering Force: Pulls nodes toward the center point in 3D space
  • 3D Collision Force: Prevents node overlap in 3D space
  • 3D Radial Force: Attracts nodes to a sphere in 3D space
  • 3D Axis Forces: Applies forces along the X, Y, and Z axes

Iteration System

The layout is computed through iterations, mainly involving the following parameters:

  • alpha: The current energy value of the iteration, controlling node movement speed
  • alphaDecay: The decay rate of the energy value
  • alphaMin: The minimum energy value; iteration stops below this value
  • velocityDecay: The velocity decay factor

Options

PropertyDescriptionTypeDefaultRequired
typeLayout typestringd3-force-3d✓
nodeSizeNode size (diameter), used for collision detectionnumber | ((node: NodeDatum, index: number, nodes: NodeDatum[]) => number)-
iterationsNumber of force iterations; higher means more precise but slowernumber-
numDimensionsNumber of dimensions (2 or 3)number3
forceSimulationCustom force simulation methodSimulation<NodeDatum, EdgeDatum>-
onTickCallback for each iteration(data: LayoutMapping) => void-
randomSourceRandom number generator() => number-

Iteration Control

PropertyDescriptionTypeDefaultRequired
alphaCurrent convergence thresholdnumber1
alphaDecayConvergence decay rate (0-1)number0.028
alphaMinStop iteration thresholdnumber0.001
alphaTargetTarget convergence thresholdnumber0
velocityDecayVelocity decay factornumber0.4

Force Model Options

Centering Force (center)

PropertyDescriptionTypeDefaultRequired
center.xCenter x coordinatenumber0
center.yCenter y coordinatenumber0
center.zCenter z coordinatenumber0
center.strengthForce strengthnumber1

Collision Force (collide)

PropertyDescriptionTypeDefaultRequired
collide.radiusCollision radiusnumber | ((node: NodeDatum, index: number, nodes: NodeDatum[]) => number)10
collide.strengthForce strengthnumber1
collide.iterationsCollision iterationsnumber1

Link Force (link)

PropertyDescriptionTypeDefaultRequired
link.idEdge id generator(edge: EdgeDatum, index: number, edges: EdgeDatum[]) => stringedge.id
link.distanceIdeal edge lengthnumber | ((edge: EdgeDatum, index: number, edges: EdgeDatum[]) => number)30
link.strengthForce strengthnumber | ((edge: EdgeDatum, index: number, edges: EdgeDatum[]) => number)1
link.iterationsLink force iterationsnumber1

Many-Body Force (manyBody)

PropertyDescriptionTypeDefaultRequired
manyBody.strengthForce strengthnumber | ((node: NodeDatum, index: number, nodes: NodeDatum[]) => number)-30
manyBody.thetaBarnes-Hut accuracynumber0.9
manyBody.distanceMinMinimum interaction distancenumber1
manyBody.distanceMaxMaximum interaction distancenumberInfinity

Radial Force (radial)

PropertyDescriptionTypeDefaultRequired
radial.strengthForce strengthnumber | ((node: NodeDatum, index: number, nodes: NodeDatum[]) => number)0.1
radial.radiusTarget radiusnumber | ((node: NodeDatum, index: number, nodes: NodeDatum[]) => number)100
radial.xSphere center xnumber0
radial.ySphere center ynumber0
radial.zSphere center znumber0

Axis Forces (x, y, z)

Each axis can be configured separately:

PropertyDescriptionTypeDefaultRequired
x.strengthX-axis force strengthnumber | ((node: NodeDatum, index: number, nodes: NodeDatum[]) => number)-
x.xTarget x coordinatenumber | ((node: NodeDatum, index: number, nodes: NodeDatum[]) => number)-
y.strengthY-axis force strengthnumber | ((node: NodeDatum, index: number, nodes: NodeDatum[]) => number)-
y.yTarget y coordinatenumber | ((node: NodeDatum, index: number, nodes: NodeDatum[]) => number)-
z.strengthZ-axis force strengthnumber | ((node: NodeDatum, index: number, nodes: NodeDatum[]) => number)-
z.zTarget z coordinatenumber | ((node: NodeDatum, index: number, nodes: NodeDatum[]) => number)-