Force-directed in 4 lines
Velocity Verlet integration with adaptive timestep. Drag a node, watch the rest of the graph reorganize. The simulation never blocks the main thread — we run on a worker by default.
const g = graphers('#canvas') .nodes(data.nodes) .edges(data.edges) .simulate({ charge: -240 });