Force-directed graph layout algorithm implemented in Elm
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Force directed graph layout in Elm

Implementation of force directed layout algorithm in Elm.

The aim of force directed graph drawing algorithms is to produce aesthetically pleasing layout of graphs by simulating attractive / repulsive forces among nodes of the graph.

See it in action here

Things you can try:

  • Several example graphs
  • Move nodes using drag and drop
  • Tweak layout algorithm parameters using sliders

Note this implementation is still experimental, but I'd like to make this into reusable library soon.


  • Add possibility to tweak layout algorithm parameters in UI
  • Add sample graphs
  • Add node drag & drop
  • Implement random graph (tree?) generation
  • Make Physics simulation code more readable
  • linear-algebra should not be needed - implement the primitives in separate module
  • Add parameter explanation hints
  • Make node / edge rendering logic configurable
  • Enable LayoutGraph initialization without randomization command (perhaps just with random gen seed?)