Skip to content

vasturiano/d3-force-clustering

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

d3.forceClustering

NPM package Build Size NPM Downloads

A custom attraction force that groups nodes into clusters based on a shared cluster ID. Nodes within the same cluster are gradually pulled toward their cluster’s dynamic center of gravity, with a spring-like force whose intensity increases linearly with distance.

This force plugin is designed to be used with the d3-force simulation engine. It is also compatible with d3-force-3d and can function in a one, two (default) or three-dimensional space.

Quick start

import d3ForceClustering from 'd3-force-clustering';

or using a script tag

<script src="//cdn.jsdelivr.net/npm/d3-force-clustering"></script>

then

d3.forceSimulation()
  .nodes(<myNodes>)
  .force('cluster', d3.forceClustering()
    .clusterId(node => node.cluster)
  );

API reference

Method Description Default
clusterId([fn]) Sets or gets the accessor function that returns the cluster ID for each node. Use this to define which cluster a node belongs to. node => node.cluster
weight([fn]) Sets or gets the accessor for node weight, which influences the cluster's centroid position. Often proportional to node area, e.g., node => node.r ** 2, so that larger nodes move less than smaller ones. By default all nodes have equal weight. node => 1
strength([num or fn]) Sets or gets the force strength. Can be a constant or a function: (clusterId, clusterNodes) => strength. This strength defines how strong is the attraction force between the nodes in a given cluster. A strength of 1 applies full force; 0 disables it. 0.2
distanceMin([num]) Minimum distance from a node to the cluster’s centroid in order for the attraction force to act. Helps prevent jittering for closely grouped nodes. 0

❤️ Support This Project

If you find this module useful and would like to support its development, you can buy me a ☕. Your contributions help keep open-source sustainable! paypal