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 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, 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, 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, BiFunction<LayoutModel2D<V>,Integer,FRLayoutAlgorithm2D.TemperatureModel> temperatureModelSupplier, 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, BiFunction<LayoutModel2D<V>,Integer,FRLayoutAlgorithm2D.TemperatureModel> temperatureModelSupplier, 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 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 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 Function<V,Point2D> getInitializer()
      Get the initializer
      Returns:
      the initializer
    • setInitializer

      public void setInitializer(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