Python is a programming language that is very suitable for data analysis. Its clean and concise syntax and a variety of rich packages allow us to use python to accomplish almost any function we want, and we only need to fund the correct package!
Today, what I want to record is how to draw the Venn Diagram by calling python’s matplotlib-venn
package. The following is a step-by-step introduction
Venn Diagram
Venn diagram is a kind of figure representing a SET of two or more group, you can clearly see the relationship between different collections.
In below I quote directly from wikipedia’s explanation:
—— From Wiki
A Venn diagram is a widely-used diagram style that shows the logical relation between sets, popularized by John Venn in the 1880s. The diagrams are used to teach elementary set theory, and to illustrate simple set relationships in probability, logic, statistics, linguistics and computer science. A Venn diagram uses simple closed curves drawn on a plane to represent sets. Very often, these curves are circles or ellipses.
Similar ideas had been proposed before Venn. Christian Weise in 1712 (Nucleus Logicoe Wiesianoe) and Leonhard Euler (Letters to a German Princess) in 1768, for instance, came up with similar ideas. The idea was popularised by Venn in Symbolic Logic, Chapter V “Diagrammatic Representation”, 1881.
Intuitively speaking, suppose we have two sets: Set A and Set B. Then we can draw the two sets into the following diagram show:
This is a classic Venn Diagram.
Use Python To Plot Venn Diagram
If you want to draw a venn diagram in python, you can use the matplotlib-venn
package.
matplotlib-venn
is mainly used to draw a venn diagram between two sets and three sets.
First, we need to install it.
pip3 install matplotlib-venn
After the installation is over, let’s start to draw the simplest two sets of venn diagram.
# coding: utf-8 from matplotlib_venn import venn2 from matplotlib import pyplot as plt # Venn2 subset = (2, 2, 1) venn2(subsets=subset) plt.show()
Output:
As you can see, this Venn diagram is drawn according to the values we set. The corresponding relationship between the set subset and the picture is as follows:
The first two values represent the two sets A and B minus the part of the intersection and the last value represents the value of the intersection.
In addition to this method, we can also directly set the content of each intersection and let the program automatically generate the Venn diagram.
I think this method is better and more flexible.
# coding: utf-8 from matplotlib_venn import venn2 from matplotlib import pyplot as plt # Venn2 set_a = set(['A', 'B', 'C']) set_b = set(['B', 'C', 'D']) venn2(subsets=[set_a, set_b]) plt.show()
Output:
The advantage of this is that we don’t need to actively set the value of each set and the value of the intersection, just set the two sets directly, and the rest of the program will automatically calculate it for us.
In addition, we can also set the color and name of the graph:
# coding: utf-8 from matplotlib_venn import venn2 from matplotlib import pyplot as plt # Venn2 set_a = set(['A', 'B', 'C']) set_b = set(['B', 'C', 'D']) venn2(subsets=[set_a, set_b], set_labels=['Set_A', 'Set_B'], set_colors=['red', 'blue']) plt.show()
Output:
The above is the general usage of venn2. Next, by the way, record the usage of venn3. Of course, it is roughly the same as venn2.
# coding: utf-8 from matplotlib_venn import venn3 from matplotlib import pyplot as plt # Venn3 venn3(subsets=(1, 2, 3, 4, 5, 6, 7)) plt.show()
Output:
A total of 7 values are entered, and the entry sequence is shown in the Venn diagram above.
There is not much difference in the method of directly setting the values of each set and letting the program draw automatically:
# coding: utf-8 from matplotlib_venn import venn3 from matplotlib import pyplot as plt # Venn3 set_a = set(['A', 'B', 'C']) set_b = set(['B', 'C', 'D']) set_c = set(['C', 'D', 'E']) venn3(subsets=[set_a, set_b, set_c], set_labels=['Set_A', 'Set_B', 'Set_C'], set_colors=['red', 'blue', 'green']) plt.show()
Output: