Bounded Force Layout - Columns by Depth
This example uses a bounded D3 force layout to visualize energy flows from source to use, with nodes colored by depth and positioned in columns according to their hierarchical level. The code applies a custom tick function that nudges nodes toward depth-based x-coordinates while constraining them within the SVG bounds, creating a structured layout. It uses d3.svg.axis-free SVG rendering with d3.layout.force, D3 v3, and a simple D3 tooltip on mouseover showing node names. The dataset is a graph of energy production and consumption categories with weighted links.
AI-generated descriptionThis example takes <a href='http://bl.ocks.org/bjtucker/'>bjtucker</a>'s block: <a href='http://bl.ocks.org/bjtucker/151f6344ffd02105a67a'>Bounded Force Layout - force rank by group</a> and swaps out the dataset, showing energy flows from source to use.
This example also adds a Simple D3 tooltip. Hat tip to biovisualize for that bl.ock.
See another view of this energy flow data at the bl.ock Sankey Particles - Transparent Links
README.md from the original bl.ock
This D3 example shows how to constrain the position of nodes within the rectangular bounds of the containing SVG element. As a side-effect of updating the node's cx and cy attributes, we update the node positions to be within the range [radius, width - radius] for x, [radius, height - radius] for y. If you prefer, you could use the each operator to do this as a separate step, rather than as a side-effect of setting attributes.
Wrote the each operator step described above, but used tick to settle groups into separate ranks. -bjtucker
forked from <a href='http://bl.ocks.org/micahstubbs/'>micahstubbs</a>'s block: <a href='http://bl.ocks.org/micahstubbs/5e07b8b42f4fb826a7145e800dc23ec2'>Bounded Force Layout - Columns by Depth</a>