Polygon sizing accuracy

FoamTree tries to ensure that the areas of polygons correspond to the weights defined in the input groups. More specifically, the ratio of polygon area to the parent polygon area should be as close as possible to the ratio of group weight to the sum of weights of the sibling groups.

This example uses a custom group label decorator to show how closely the polygon area matches the corresponding group weight. A value of +5.2%, for example, means that the polygon area is 5.2% larger than it, ideally, should be based on the group's weight. Additionally, a group color decorator is used that assigns colors on a red-yellow-green scale depending on the size difference.

Group sizing errors are fairly small for weight-balanced data sets, that is when the differences in weights are not very large. When weight differences get very large, FoamTree currently tends to render small-weight groups much larger than they should be.

Experiments

Generate new data with uniform | balanced | unbalanced weights.
Set initializer to treemap | fisheye | black hole | order | random.
Set relaxation quality to highest | standard | low | none.

What's in the code?