Today is the birthday of John Venn (of
Venn diagrams fame). He was born on this day, 4th August 1834. So I was thinking about diagrams today and finally got
around to looking up code for the trendiest-plots-of-2017, 'Joy plots'.
As of July 2017 we now have ggjoy plotting code in R (https://github.com/clauswilke/ggjoy) and they're also beautiful in Python's Seaborn (https://github.com/mwaskom/seaborn/pull/1238).
They're named after the Joy Division album cover. But finding out what 'Joy Division' actually means (https://en.wikipedia.org/wiki/House_of_Dolls) is always going to make me less joyful about the joy in using them.
Showing posts with label data visualisation. Show all posts
Showing posts with label data visualisation. Show all posts
Friday, 4 August 2017
Friday, 23 August 2013
Venn diagrams
I'd always thought that drawing Venn diagrams were quite trivial, until I needed to create some recently. They are trivial, if we only have 2 equal-sized sets. If we have 3 sets, and we want the circle sizes to represent the number of data items in each set, then the layout algorithm is more complex. Luckily there's a great package for Python called matplotlib-venn which does exactly what I wanted.
However, if I have 4 sets, then it gets more complicated (and isn't yet handled by matplotlib-venn). A Venn diagram must show all possible intersections. Venn used overlapping ellipses to show how this could be achieved.
This is where Venn diagrams differ from Euler diagrams. Euler diagrams don't show empty intersections, so they can look much simpler than Venn diagrams, and can contain fully-nested circles. There are Venn diagrams that can represent all the overlaps of 5 and 6 sets, but we'd end up with some extremely complex diagrams that don't really aid the visualisation of our data.
Update (9 Oct 2013): Here's a Javascript/D3.js interactive version with more thoughts on why it's a difficult problem.
Update (20th March 2014): Here are a couple of completely over the top diagrams: a pine tree and a banana. Venn or Euler?
However, if I have 4 sets, then it gets more complicated (and isn't yet handled by matplotlib-venn). A Venn diagram must show all possible intersections. Venn used overlapping ellipses to show how this could be achieved.
![]() |
Diagram by RupertMillard from Wikimedia Commons |
This is where Venn diagrams differ from Euler diagrams. Euler diagrams don't show empty intersections, so they can look much simpler than Venn diagrams, and can contain fully-nested circles. There are Venn diagrams that can represent all the overlaps of 5 and 6 sets, but we'd end up with some extremely complex diagrams that don't really aid the visualisation of our data.
Update (9 Oct 2013): Here's a Javascript/D3.js interactive version with more thoughts on why it's a difficult problem.
Update (20th March 2014): Here are a couple of completely over the top diagrams: a pine tree and a banana. Venn or Euler?
Subscribe to:
Posts (Atom)