Class FRLayout2<V,​E>

  • All Implemented Interfaces:
    Layout<V,​E>, IterativeContext, org.apache.commons.collections4.Transformer<V,​java.awt.geom.Point2D>

    public class FRLayout2<V,​E>
    extends AbstractLayout<V,​E>
    implements IterativeContext
    Implements the Fruchterman-Reingold force-directed algorithm for node layout. This is an experimental attempt at optimizing FRLayout; if it is successful it will be folded back into FRLayout (and this class will disappear).

    Behavior is determined by the following settable parameters:

    • attraction multiplier: how much edges try to keep their vertices together
    • repulsion multiplier: how much vertices try to push each other apart
    • maximum iterations: how many iterations this algorithm will use before stopping
    Each of the first two defaults to 0.75; the maximum number of iterations defaults to 700.
    See Also:
    "Fruchterman and Reingold, 'Graph Drawing by Force-directed Placement'"
    • Constructor Summary

      Constructors 
      Constructor Description
      FRLayout2​(edu.uci.ics.jung.graph.Graph<V,​E> g)
      Creates an instance for the specified graph.
      FRLayout2​(edu.uci.ics.jung.graph.Graph<V,​E> g, java.awt.Dimension d)
      Creates an instance of size d for the specified graph.
    • Constructor Detail

      • FRLayout2

        public FRLayout2​(edu.uci.ics.jung.graph.Graph<V,​E> g)
        Creates an instance for the specified graph.
      • FRLayout2

        public FRLayout2​(edu.uci.ics.jung.graph.Graph<V,​E> g,
                         java.awt.Dimension d)
        Creates an instance of size d for the specified graph.
    • Method Detail

      • setSize

        public void setSize​(java.awt.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>
      • setAttractionMultiplier

        public void setAttractionMultiplier​(double attraction)
        Sets the attraction multiplier.
      • setRepulsionMultiplier

        public void setRepulsionMultiplier​(double repulsion)
        Sets the repulsion multiplier.
      • reset

        public void reset()
        Specified by:
        reset in interface Layout<V,​E>
      • 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()
        Moves the iteration forward one notch, calculation attraction and repulsion between vertices and edges and cooling the temperature.
        Specified by:
        step in interface IterativeContext
      • calcPositions

        protected void calcPositions​(V v)
      • calcAttraction

        protected void calcAttraction​(E e)
      • calcRepulsion

        protected void calcRepulsion​(V v1)
      • setMaxIterations

        public void setMaxIterations​(int maxIterations)
        Sets the maximum number of iterations.
      • isIncremental

        public boolean isIncremental()
        This one is an incremental visualization.
      • done

        public boolean done()
        Returns true once the current iteration has passed the maximum count, MAX_ITERATIONS.
        Specified by:
        done in interface IterativeContext