Python绘制韦恩图并通过集合找到交集并集数据

  1. matplotlib_venn库里支持venn2和venn3,以venn3为例绘图;

  1. venn中包含venn2-venn6,以venn4为例绘图。

安装库:pip install matplotlib_venn和pip install venn

(1)venn3绘图:

import matplotlib.pyplot as plt
from matplotlib_venn import venn3


a=[12,9,6,13,10,12]
b=[8,6,10,7,9,11]
c=[11,12,9,12,13,9]

a1 = set(a)
b1 = set(b)
c1 = set(c)


plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文
plt.figure(figsize=(14, 8), dpi=200) #创建画布

g=venn3(subsets = [a1,b1,c1], #绘图数据集
        set_labels = ('A', 'B','C'), #设置组名
        set_colors=("r","b",'g'),#设置圈的颜色,中间颜色不能修改
        alpha=0.6,#透明度
        normalize_to=1.0,#venn图占据figure的比例,1.0为占满
        )
plt.title('韦恩图',fontsize=15)
plt.show()

#并集
jj = a1.union(b1).union(c1)
#a1,b1交集
ab = a1.intersection(b1)
#a1,c1交集
ac = a1.intersection(c1)
#b1,c1交集
bc = b1.intersection(c1)
#a1,b1,c1交集
abc = a1.intersection(b1).intersection(c1)

#a1独有
a_unique = a1.difference(b1).difference(c1)
#b1独有
b_unique = b1.difference(a1).difference(c1)
#c1独有
c_unique = c1.difference(a1).difference(b1)


print('a1/b1/c1并集:{}\na1,b1交集:{}\na1,c1交集:{}\nb1,c1交集:{}\na1,b1,c1交集:{}\
      \na1独有数据:{}\nb1独有数据:{}\nc1独有数据:{}\
      '.format(jj,ab,ac,bc,abc,a_unique,b_unique,c_unique))

可以找到交集并集数据。

(2)也可以用venn中的venn3进行绘制

import matplotlib.pyplot as plt
import warnings
import venn
warnings.filterwarnings("ignore")


a=[12,9,6,13,10,12]
b=[8,6,10,7,9,11]
c=[11,12,9,12,13,9]

a1 = set(a)
b1 = set(b)
c1 = set(c)

labels = venn.generate_petal_labels([a1,b1,c1])


venn.venn3(labels, names=list('abc'),dpi=200)

plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文
plt.title('韦恩图',fontsize=15)
plt.show()

同理,venn4

import matplotlib.pyplot as plt
import warnings
import venn
warnings.filterwarnings("ignore")


a=[12,9,6,13,10,12]
b=[8,6,10,7,9,11]
c=[11,12,9,12,13,9]
d=[6,12,5,12,10,9]

a1 = set(a)
b1 = set(b)
c1 = set(c)
d1 = set(d)

labels = venn.generate_petal_labels([a1,b1,c1,d1])


venn.venn3(labels, names=list('abcd'),dpi=200)

plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文
plt.title('韦恩图',fontsize=15)
plt.show()

venn4可以显示百分比等信息

import matplotlib.pyplot as plt
import warnings
import venn
warnings.filterwarnings("ignore")


a=[12,9,6,13,10,12]
b=[8,6,10,7,9,11]
c=[11,12,9,12,13,9]
d=[6,12,5,12,10,9]

a1 = set(a)
b1 = set(b)
c1 = set(c)
d1 = set(d)

labels = venn.get_labels([a1,b1,c1,d1],fill=["number", 
                                            "logic",#开启每个组分代码
                                            "percent"#每个组分的百分比
                                            ])


venn.venn3(labels, names=list('abcd'),dpi=200)

plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文
plt.title('韦恩图',fontsize=15)
plt.show()

Python绘制韦恩图通常依赖于一些特定的库,比如`matplotlib_venn`。这个库可以很方便地帮助我们创建两组或三组合数据之间的交集等关系展示。下面我会简要介绍一下如何安装和使用该库来绘制简单的二元及三元韦恩图。 ### 安装所需库 首先你需要确保已经安装了 `matplotlib` 和 `matplotlib-venn` 库。如果没有的话,可以通过pip命令轻松安装: ```bash pip install matplotlib matplotlib-venn ``` ### 绘制基本二元韦恩图示例代码 接下来是一段简单例子用于生成两个集合间的韦恩图: ```python from matplotlib import pyplot as plt from matplotlib_venn import venn2 # 创建一组虚拟的数据 A 和 B set_A = set(['A', 'B', 'C', 'D']) set_B = set(['C', 'D', 'E']) plt.figure(figsize=(6,4)) v = venn2([set_A, set_B], ('Set A', 'Set B')) for text in v.set_labels: if text is not None: text.set_fontsize(18) plt.show() ``` 此段脚本将会显示一个包含两个圆圈表示各自数据标记出它们之间共有元素区域的标准Venn Diagram. 对于更复杂的情况如三个独立变量间的关系,则需要使用到`venn3()`函数而不是上面提到过的`venn2()`. 语法非常类似: ```python from matplotlib_venn import venn3 # 示例中假设存在第三个数据 C set_C = {'F','G'} v=venn3([set_A,set_B,set_C],('Set A','Set B','Set C')) plt.title("Three-way Venn diagram") plt.show() ``` 以上就是利用 Python 进行韦恩图表制作的基本步骤啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值