jon*_*nas 32 python matplotlib venn-diagram matplotlib-venn
我想绘制属于某些组的变量.
假设我有6个变量,我想要分成这3组,并绘制像维恩图.我想将变量名称注释为三个气泡.
在这个简单的例子中,我们可以说1个变量在组1中,3个变量在组2中,2个变量在组3中.
任何人都可以帮我一个简单的例子来说明如何在matplotlib中做到这一点?
Hoo*_*ked 52
matplotlib有一个美丽的维恩图插件,名为matplotlib-venn.从圆圈的大小(与设置大小成比例)到内部和外部标签,它看起来可以完全自定义以满足您的需求.
使用网站上的示例代码给出如下情节:

编辑:根据下面的注释,以下代码使用相同的库为非重叠的圆圈提供文本:
import pylab as plt
from matplotlib_venn import venn3, venn3_circles
v = venn3(subsets=(1,1,0,1,0,0,0))
v.get_label_by_id('100').set_text('First')
v.get_label_by_id('010').set_text('Second')
v.get_label_by_id('001').set_text('Third')
plt.title("Not a Venn diagram")
plt.show()
Run Code Online (Sandbox Code Playgroud)
给出图表:

绘制维恩图的最简单方法
import matplotlib.pyplot as plt
from matplotlib_venn import venn3
set1 = set(['A', 'B', 'C'])
set2 = set(['A', 'B', 'D'])
set3 = set(['A', 'E', 'F'])
venn3([set1, set2, set3], ('Group1', 'Group2', 'Group3'))
plt.show()
Run Code Online (Sandbox Code Playgroud)
在这里您可以只传递数组并计算重叠。
import numpy as np
from matplotlib_venn import venn3
def venn_diagram(a, b, c, labels=['A', 'B', 'C']):
a = set(a)
b = set(b)
c = set(c)
only_a = len(a - b - c)
only_b = len(b - a - c)
only_c = len(c - a - b)
only_a_b = len(a & b - c)
only_a_c = len(a & c - b)
only_b_c = len(b & c - a)
a_b_c = len(a & b & c)
venn3(subsets=(only_a, only_b, only_a_b, only_c, only_a_c, only_b_c, a_b_c), set_labels=labels)
a, b, c = np.round(np.random.rand(3, 50000), 5)
venn_diagram(a, b, c)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34335 次 |
| 最近记录: |