Class KKLayout<V,E>

java.lang.Object
edu.uci.ics.jung.algorithms.layout.AbstractLayout<V,E>
edu.uci.ics.jung.algorithms.layout.KKLayout<V,E>
All Implemented Interfaces:
com.google.common.base.Function<V,Point2D>, Layout<V,E>, IterativeContext, Function<V,Point2D>

public class KKLayout<V,E> extends AbstractLayout<V,E> implements IterativeContext
Implements the Kamada-Kawai algorithm for node layout. Does not respect filter calls, and sometimes crashes when the view changes to it.
See Also:
  • "Tomihisa Kamada and Satoru Kawai: An algorithm for drawing general indirect graphs. Information Processing Letters 31(1):7-15, 1989"
  • "Tomihisa Kamada: On visualization of abstract objects and relations. Ph.D. dissertation, Dept. of Information Science, Univ. of Tokyo, Dec. 1988."
  • Field Details

    • EPSILON

      private double EPSILON
    • currentIteration

      private int currentIteration
    • maxIterations

      private int maxIterations
    • status

      private String status
    • L

      private double L
    • K

      private double K
    • dm

      private double[][] dm
    • adjustForGravity

      private boolean adjustForGravity
    • exchangeVertices

      private boolean exchangeVertices
    • vertices

      private V[] vertices
    • xydata

      private Point2D[] xydata
    • distance

      protected Distance<V> distance
      Retrieves graph distances between vertices of the visible graph
    • diameter

      protected double diameter
      The diameter of the visible graph. In other words, the maximum over all pairs of vertices of the length of the shortest path between a and bf the visible graph.
    • length_factor

      private double length_factor
      A multiplicative factor which partly specifies the "preferred" length of an edge (L).
    • disconnected_multiplier

      private double disconnected_multiplier
      A multiplicative factor which specifies the fraction of the graph's diameter to be used as the inter-vertex distance between disconnected vertices.
  • Constructor Details

    • KKLayout

      public KKLayout(Graph<V,E> g)
    • KKLayout

      public KKLayout(Graph<V,E> g, Distance<V> distance)
      Creates an instance for the specified graph and distance metric.
      Parameters:
      g - the graph on which the layout algorithm is to operate
      distance - specifies the distance between pairs of vertices
  • Method Details

    • setLengthFactor

      public void setLengthFactor(double length_factor)
      Parameters:
      length_factor - a multiplicative factor which partially specifies the preferred length of an edge
    • setDisconnectedDistanceMultiplier

      public void setDisconnectedDistanceMultiplier(double disconnected_multiplier)
      Parameters:
      disconnected_multiplier - a multiplicative factor that specifies the fraction of the graph's diameter to be used as the inter-vertex distance between disconnected vertices
    • getStatus

      public String getStatus()
      Returns:
      a string with information about the current status of the algorithm.
    • setMaxIterations

      public void setMaxIterations(int maxIterations)
    • isIncremental

      public boolean isIncremental()
      Returns:
      true
    • done

      public boolean done()
      Specified by:
      done in interface IterativeContext
      Returns:
      true if the current iteration has passed the maximum count.
    • initialize

      public void initialize()
      Description copied from interface: Layout
      Initializes fields in the node that may not have been set during the constructor. Must be called before the iterations begin.
      Specified by:
      initialize in interface Layout<V,E>
    • step

      public void step()
      Description copied from interface: IterativeContext
      Advances one step.
      Specified by:
      step in interface IterativeContext
    • adjustForGravity

      public void adjustForGravity()
      Shift all vertices so that the center of gravity is located at the center of the screen.
    • setSize

      public void setSize(Dimension size)
      Description copied from class: AbstractLayout
      When a visualization is resized, it presumably wants to fix the locations of the vertices and possibly to reinitialize its data. The current method calls initializeLocations followed by initialize_local.
      Specified by:
      setSize in interface Layout<V,E>
      Overrides:
      setSize in class AbstractLayout<V,E>
      Parameters:
      size - the space to use to lay out this graph
    • setAdjustForGravity

      public void setAdjustForGravity(boolean on)
    • getAdjustForGravity

      public boolean getAdjustForGravity()
    • setExchangeVertices

      public void setExchangeVertices(boolean on)
      Enable or disable the local minimum escape technique by exchanging vertices.
      Parameters:
      on - iff the local minimum escape technique is to be enabled
    • getExchangeVertices

      public boolean getExchangeVertices()
    • calcDeltaXY

      private double[] calcDeltaXY(int m)
      Determines a step to new position of the vertex m.
    • calcDeltaM

      private double calcDeltaM(int m)
      Calculates the gradient of energy function at the vertex m.
    • calcEnergy

      private double calcEnergy()
      Calculates the energy function E.
    • calcEnergyIfExchanged

      private double calcEnergyIfExchanged(int p, int q)
      Calculates the energy function E as if positions of the specified vertices are exchanged.
    • reset

      public void reset()
      Specified by:
      reset in interface Layout<V,E>