Force-Directed Graph 2
A force-directed graph visualizes transactions between customers, with each node representing a customer and each gray line representing a transaction. The graph uses D3 v7's `d3.forceSimulation` with `forceManyBody`, `forceLink`, `forceCenter`, and `forceCollide` to position nodes, while SVG circles, lines, and text labels render the data from `customers.csv` and `transactions.csv`. Nodes are draggable via `d3.drag`, which pins their positions during interaction and restarts the simulation.