Interface ForceX<NodeDatum>

The x-positioning force pushes nodes towards a desired position along the given dimension with a configurable strength. The strength of the force is proportional to the one-dimensional distance between the node’s position and the target position. While this force can be used to position individual nodes, it is intended primarily for global forces that apply to all (or most) nodes.

The generic refers to the type of data for a node.

interface ForceX {
    initialize(nodes, random): void;
    strength(): ((d, i, data) => number);
    strength(strength): ForceX<NodeDatum>;
    x(): ((d, i, data) => number);
    x(x): ForceX<NodeDatum>;
    (alpha): void;
}

Type Parameters

Hierarchy

  • Force<NodeDatum, any>
    • ForceX
  • Apply this force, optionally observing the specified alpha. Typically, the force is applied to the array of nodes previously passed to force.initialize, however, some forces may apply to a subset of nodes, or behave differently. For example, d3.forceLink applies to the source and target of each link.

    Parameters

    • alpha: number

    Returns void

Methods

  • Supplies the array of nodes and random source to this force. This method is called when a force is bound to a simulation via simulation.force and when the simulation’s nodes change via simulation.nodes.

    A force may perform necessary work during initialization, such as evaluating per-node parameters, to avoid repeatedly performing work during each application of the force.

    Parameters

    • nodes: NodeDatum[]
    • random: (() => number)
        • (): number
        • Returns number

    Returns void

  • Returns the current strength accessor, which defaults to a constant strength for all nodes of 0.1.

    Returns ((d, i, data) => number)

      • (d, i, data): number
      • Returns the current strength accessor, which defaults to a constant strength for all nodes of 0.1.

        Parameters

        • d: NodeDatum
        • i: number
        • data: NodeDatum[]

        Returns number

  • Sets the strength accessor to the specified number or function, re-evaluates the strength accessor for each node, and returns this force. The strength determines how much to increment the node’s x-velocity: (x - node.x) × strength. For example, a value of 0.1 indicates that the node should move a tenth of the way from its current x-position to the target x-position with each application. Higher values moves nodes more quickly to the target position, often at the expense of other forces or constraints. A value outside the range [0,1] is not recommended. The strength accessor is invoked for each node in the simulation, being passed the node and its zero-based index. The resulting number is then stored internally, such that the strength of each node is only recomputed when the force is initialized or when this method is called with a new strength, and not on every application of the force.

    Parameters

    • strength: number | ((d, i, data) => number)

    Returns ForceX<NodeDatum>

  • Return the current x-accessor, which defaults to a function returning 0 for all nodes.

    Returns ((d, i, data) => number)

      • (d, i, data): number
      • Return the current x-accessor, which defaults to a function returning 0 for all nodes.

        Parameters

        • d: NodeDatum
        • i: number
        • data: NodeDatum[]

        Returns number

  • Sets the x-coordinate accessor to the specified number or function, re-evaluates the x-accessor for each node, and returns this force. The x-accessor is invoked for each node in the simulation, being passed the node and its zero-based index. The resulting number is then stored internally, such that the target x-coordinate of each node is only recomputed when the force is initialized or when this method is called with a new x, and not on every application of the force.

    Parameters

    • x: number | ((d, i, data) => number)

    Returns ForceX<NodeDatum>