Package com.macrofocus.treemap
Class AlgorithmFactory
- java.lang.Object
-
- com.macrofocus.treemap.AlgorithmFactory
-
- Direct Known Subclasses:
SwingAlgorithmFactory
@JsType public class AlgorithmFactory extends java.lang.Object
Factory class for accessing predefined layout algorithms.
-
-
Field Summary
Fields Modifier and Type Field Description static Algorithm
BAR
Bar Chart layout.static Algorithm
BINARY_TREE
Implementation of the Binary Tree algorithm.static Algorithm
CIRCLEPACKING
Circle packing treemap layout.static Algorithm
CIRCULAR
Circular treemap layout.static Algorithm
ICICLE
static Algorithm
MATRIX
Matrix layout.static Algorithm
PIE
Pie Chart layout.static Algorithm
PIVOT_BY_SPLIT_SIZE
Implementation of the Pivot By algorithm.static Algorithm
SLICE
Implementation of the Slice-and-dice algorithm described in the original treemap paper.static Algorithm
SPLIT
Implementation of the Split algorithm.static Algorithm
SQUARIFIED
Implementation of the Squarified algorithm.static Algorithm
SQUARIFIEDPLUS
Implementation of the Squarified+ algorithm.static Algorithm
STRIP
Implementation of the Strip algorithm.static Algorithm
SUNBURST
-
Constructor Summary
Constructors Modifier Constructor Description protected
AlgorithmFactory(Algorithm... entries)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(Algorithm entry)
Algorithm
get(java.lang.String name)
java.util.List<Algorithm>
getAlgorithms()
Algorithm
getDefault()
static AlgorithmFactory
getInstance()
-
-
-
Field Detail
-
BINARY_TREE
public static final Algorithm BINARY_TREE
Implementation of the Binary Tree algorithm. It is described in: Martin Wattenberg and Ben Bederson: Dynamic treemap layout comparison. University of Maryland: http://www.cs.umd.edu/hcil/treemap-history/java_algorithms/LayoutApplet.html. Complexity: O(n log n), where n is the number of nodes in the tree.
-
SLICE
public static final Algorithm SLICE
Implementation of the Slice-and-dice algorithm described in the original treemap paper. It is described in: Ben Shneiderman. 'Tree Visualization with Tree-Maps: 2-d Space-filling Approach." ACM Transactions on Graphics, 11(1), pp. 92-99, 1992. It uses parallel lines to divide a rectangle representing an item into smaller rectangles representing its children. At each level of hierarchy the orientation of the lines - vertical or horizontal - is switched (alternate), computed according to the aspect ratio (Best), or fixed (Vertical, Horizontal). Complexity: O(n), where n is the number of nodes in the tree.
-
SQUARIFIED
public static final Algorithm SQUARIFIED
Implementation of the Squarified algorithm. It is described in: Bruls, D.M., C. Huizing, J.J. van Wijk. "Squarified Treemaps". In: W. de Leeuw, R. van Liere (eds.), Data Visualization 2000, Proceedings of the joint Eurographics and IEEE TCVG Symposium on Visualization, 2000, pp. 33-42. Sub-divids a parent rectangular area into child rectangles. It implements the squaring treemap algorithm where all child nodes are allocated areas proportional to their values, but the aspect ratio of each rectangle is kept as close as possible to a square. Complexity: O(n), where n is the number of nodes in the tree.
-
SQUARIFIEDPLUS
public static final Algorithm SQUARIFIEDPLUS
Implementation of the Squarified+ algorithm. It is described in: Cesarano A, Ferrucci F, Torre M. A heuristic extending the Squarified treemapping algorithm. arXiv preprint arXiv:1609.00754. 2016 Sep 2. A heuristic extending the squarified algorithm with better aspect ratios and higher homogeneity among items. Complexity: O(n), where n is the number of nodes in the tree.
-
STRIP
public static final Algorithm STRIP
Implementation of the Strip algorithm. It is described in: Ben Shneiderman and Martin Wattenberg. Ordered and quantum treemaps. Information Visualization, 2001. Infovis 2001. IEEE Symposium on pages 73-78, 2001. ISSN 1522-404X. Complexity: O(sqrt(n)) average, O(n) worse case, where n is the number of nodes in the tree.
-
PIVOT_BY_SPLIT_SIZE
public static final Algorithm PIVOT_BY_SPLIT_SIZE
Implementation of the Pivot By algorithm. It is described described in: Ben Shneiderman and Martin Wattenberg. Ordered treemap layouts. IEEE Symposium on Information Visualization, 0:73, 2001. Complexity: O(n^2), where n is the number of nodes in the tree (depends on the pivot in use).
-
SPLIT
public static final Algorithm SPLIT
Implementation of the Split algorithm. It is described in: Engdahl, B. "Ordered and Unordered Treemap Algorithms and Their Applications on Handheld Devices". 2005. Produces a layout where the natural ordering of the data set is roughly preserved, while in most cases producing better aspect ratios than the Pivot and the Strip treemaps. Complexity: O(n log n) (worst case), O(n) average, where n is the number of nodes in the tree.
-
CIRCULAR
public static final Algorithm CIRCULAR
Circular treemap layout.
-
CIRCLEPACKING
public static final Algorithm CIRCLEPACKING
Circle packing treemap layout.
-
PIE
public static final Algorithm PIE
Pie Chart layout.
-
BAR
public static final Algorithm BAR
Bar Chart layout.
-
MATRIX
public static final Algorithm MATRIX
Matrix layout.
-
SUNBURST
public static final Algorithm SUNBURST
-
ICICLE
public static final Algorithm ICICLE
-
-
Constructor Detail
-
AlgorithmFactory
protected AlgorithmFactory(Algorithm... entries)
-
-
Method Detail
-
getInstance
public static AlgorithmFactory getInstance()
-
add
public void add(Algorithm entry)
-
getDefault
public Algorithm getDefault()
-
getAlgorithms
public java.util.List<Algorithm> getAlgorithms()
-
get
public Algorithm get(java.lang.String name)
-
-