Class FRLayoutAlgorithm2D<V,​E>

java.lang.Object
org.jgrapht.alg.drawing.FRLayoutAlgorithm2D<V,​E>
Type Parameters:
V - the vertex type
E - the edge type
All Implemented Interfaces:
LayoutAlgorithm2D<V,​E>
Direct Known Subclasses:
IndexedFRLayoutAlgorithm2D

public class FRLayoutAlgorithm2D<V,​E>
extends java.lang.Object
Fruchterman and Reingold Force-Directed Placement Algorithm. The algorithm belongs in the broad category of force directed graph drawing algorithms and is described in the paper:
  • Thomas M. J. Fruchterman and Edward M. Reingold. Graph drawing by force-directed placement. Software: Practice and experience, 21(11):1129--1164, 1991.
Author:
Dimitrios Michail
  • Field Details

  • Constructor Details

    • FRLayoutAlgorithm2D

      public FRLayoutAlgorithm2D()
      Create a new layout algorithm
    • FRLayoutAlgorithm2D

      public FRLayoutAlgorithm2D​(int iterations)
      Create a new layout algorithm
      Parameters:
      iterations - number of iterations
    • FRLayoutAlgorithm2D

      public FRLayoutAlgorithm2D​(int iterations, double normalizationFactor)
      Create a new layout algorithm
      Parameters:
      iterations - number of iterations
      normalizationFactor - normalization factor for the optimal distance
    • FRLayoutAlgorithm2D

      public FRLayoutAlgorithm2D​(int iterations, double normalizationFactor, java.util.Random rng)
      Create a new layout algorithm
      Parameters:
      iterations - number of iterations
      normalizationFactor - normalization factor for the optimal distance
      rng - the random number generator
    • FRLayoutAlgorithm2D

      public FRLayoutAlgorithm2D​(int iterations, double normalizationFactor, java.util.Random rng, double tolerance)
      Create a new layout algorithm
      Parameters:
      iterations - number of iterations
      normalizationFactor - normalization factor for the optimal distance
      rng - the random number generator
      tolerance - tolerance used when comparing floating point values
    • FRLayoutAlgorithm2D

      public FRLayoutAlgorithm2D​(int iterations, double normalizationFactor, java.util.function.BiFunction<LayoutModel2D<V>,​java.lang.Integer,​FRLayoutAlgorithm2D.TemperatureModel> temperatureModelSupplier, java.util.Random rng)
      Create a new layout algorithm
      Parameters:
      iterations - number of iterations
      normalizationFactor - normalization factor for the optimal distance
      temperatureModelSupplier - a simulated annealing temperature model supplier
      rng - the random number generator
    • FRLayoutAlgorithm2D

      public FRLayoutAlgorithm2D​(int iterations, double normalizationFactor, java.util.function.BiFunction<LayoutModel2D<V>,​java.lang.Integer,​FRLayoutAlgorithm2D.TemperatureModel> temperatureModelSupplier, java.util.Random rng, double tolerance)
      Create a new layout algorithm
      Parameters:
      iterations - number of iterations
      normalizationFactor - normalization factor for the optimal distance
      temperatureModelSupplier - a simulated annealing temperature model supplier
      rng - the random number generator
      tolerance - tolerance used when comparing floating point values
  • Method Details

    • layout

      public void layout​(Graph<V,​E> graph, LayoutModel2D<V> model)
      Description copied from interface: LayoutAlgorithm2D
      Layout a graph.
      Parameters:
      graph - the graph
      model - the layout model to use
    • attractiveForce

      protected double attractiveForce​(double distance)
      Calculate the attractive force.
      Parameters:
      distance - the distance
      Returns:
      the force
    • repulsiveForce

      protected double repulsiveForce​(double distance)
      Calculate the repulsive force.
      Parameters:
      distance - the distance
      Returns:
      the force
    • calculateRepulsiveForces

      protected java.util.Map<V,​Point2D> calculateRepulsiveForces​(Graph<V,​E> graph, LayoutModel2D<V> model)
      Calculate the repulsive forces between vertices
      Parameters:
      graph - the graph
      model - the model
      Returns:
      the displacement per vertex due to the repulsive forces
    • calculateAttractiveForces

      protected java.util.Map<V,​Point2D> calculateAttractiveForces​(Graph<V,​E> graph, LayoutModel2D<V> model)
      Calculate the repulsive forces between vertices connected with edges.
      Parameters:
      graph - the graph
      model - the model
      Returns:
      the displacement per vertex due to the attractive forces
    • getInitializer

      public java.util.function.Function<V,​Point2D> getInitializer()
      Get the initializer
      Returns:
      the initializer
    • setInitializer

      public void setInitializer​(java.util.function.Function<V,​Point2D> initializer)
      Set the initializer
      Parameters:
      initializer - the initializer
    • init

      protected void init​(Graph<V,​E> graph, LayoutModel2D<V> model)
      Initialize a model using the initializer.
      Parameters:
      graph - the graph
      model - the model