d3.js: suggested node position in force layout

duckworthd picture duckworthd · Jul 9, 2012 · Viewed 8.2k times · Source

I would like to create a graph where nodes have suggested positions, but I would also like to use the force layout to ensure the nodes themselves don't overlap. Is this possible in d3?

Answer

mbostock picture mbostock · Jul 11, 2012

Yes, you can do this by:

  • Disabling the default gravity and charge forces.
  • Implementing collision detection.
  • Implementing "custom" gravity that attracts each node to its suggested position.

Here's a live example:

Similar techniques were used in Shan Carter's visualization of Obama's 2013 budget proposal, which are further discussed in a tutorial by Jim Vallandingham.