This page tests out a couple different venn diagram layout algorithms for accuracy and performance on random data.

Circles are randomly positioned and then the intersection areas are calculated from these circles. Using only the intersection areas, each algorithm has to lay out a venn diagram that is isomorphic to the original input.

The graphs below measure the percentage of the time the algorithm successfully reconstructs the input, and how long it takes to do so.


Performance by Version

Success Rate

Average Time (ms)


These charts show the difference in performance from the original version compared with the algorithm improvements detailed in this post.

A failure in this case is if any laid out area differs by a perceptible amount from the input: I chose a 10% difference in size to be perceptible.

The difficulty in this test is strongly dependant on how the circles are positioned randomly. I'm setting the centres of each circle to be in randomly (0, 1) and then setting the radii to be in (0.1, 0.5). This can be made easier by setting the radii to (0.5, 1.0) or harder by setting to (0.1, 0.3) for instance.