I’m wondering what’s the proper way to draw Venn diagrams.
I’ve seen that Graphviz has a “nice to have” mention about them, and there are a few simple JS libraries - mostly for two sets. Here’s also my own attempt using an LLM [1].
But maybe someone knows a more general or robust solution - or a better way to achieve this?
In the future, I’d like to be able, for example, to find the intersection between two Venn diagrams of three sets each etc.
the comments here https://news.ycombinator.com/item?id=45742907 have some discussion about projects that take a "focused algorithm for various different diagram types" approach vs graphviz's one size fits all approach. worth checking to see if any of them do venn diagrams.
Technically a Venn diagram's entire point is to visualize all possible set relations between N sets. Their "practical" use is explicitly visualizing this.
In popular terminology they are very often confused with Euler Diagrams [0] which represent meaningful relations in sets but not all possible. You shouldn't create Euler Diagrams this complex, but the raison d'etre of Venn diagrams is to visualize the complex nature of set relations.
Nice! I wonder if there's a mathematical theorem to describe the possible shapes for a 2-d venn diagram of N sets or if there's an N for which it is no longer possible (or maybe it's possible for all N!?). Probably an application of graph theory and Euler's formula to determine feasibility and then something else to figure out the shape constraints. Never thought about it, but an interesting idea.
Really nice theoretical exercise! For practical visualization, an UpSet plot is a great option: https://upset.app/
Related: the 6-set banana Venn diagram – https://www.nature.com/articles/nature11241/figures/4
Still my favorite Venn.
I was in a genetics graduate program when this was published, and this spread like wildfire.
I’m wondering what’s the proper way to draw Venn diagrams. I’ve seen that Graphviz has a “nice to have” mention about them, and there are a few simple JS libraries - mostly for two sets. Here’s also my own attempt using an LLM [1].
But maybe someone knows a more general or robust solution - or a better way to achieve this? In the future, I’d like to be able, for example, to find the intersection between two Venn diagrams of three sets each etc.
[1] https://vitalnodo.github.io/FSLE/
the comments here https://news.ycombinator.com/item?id=45742907 have some discussion about projects that take a "focused algorithm for various different diagram types" approach vs graphviz's one size fits all approach. worth checking to see if any of them do venn diagrams.
The website isn't working for me (Android Firefox/Chrome).
Nor Firefox Android, even in Desktop mode.
Same for iOS.
Please don’t actually use these 5,6,7-way Venn diagrams for anything practical, they’re virtually useless and communicate nothing.
Technically a Venn diagram's entire point is to visualize all possible set relations between N sets. Their "practical" use is explicitly visualizing this.
In popular terminology they are very often confused with Euler Diagrams [0] which represent meaningful relations in sets but not all possible. You shouldn't create Euler Diagrams this complex, but the raison d'etre of Venn diagrams is to visualize the complex nature of set relations.
0. https://en.wikipedia.org/wiki/Euler_diagram
Thanks, I was just about to do that!
Beautiful! I want to get this on a t-shirt!
Nice! I wonder if there's a mathematical theorem to describe the possible shapes for a 2-d venn diagram of N sets or if there's an N for which it is no longer possible (or maybe it's possible for all N!?). Probably an application of graph theory and Euler's formula to determine feasibility and then something else to figure out the shape constraints. Never thought about it, but an interesting idea.
It is possible for arbitrary N; one construction is called the Edwards-Venn diagram. See https://happyruin.wordpress.com/2013/03/24/edwards-venn-diag...
[dead]