python 画韦恩图(venn)代码(两组和三组数据),简单易学易上手

韦恩图除了用R可以画之外,用python也可以画,通过对两个阶段的对应的geneid进行韦恩图展示,即可以知道两个阶段重叠的内容有多少,并通过写代码,取出两个阶段重叠部分的数据。

在这里插入图片描述

import matplotlib.pyplot as plt
import matplotlib_venn
# import venn as venn  
from matplotlib_venn import venn2, venn3, venn2_circles
import csv
import numpy as np

list2 = []
with open('me.csv', encoding='utf-8') as f2:
    f2_csv = csv.reader(f2)
    for i, row1 in enumerate(f2_csv):
        if i >= 1:
            list2.append(row1[0])   #row1[0] 是一列geneid的内容

list3 = []
with open('oo.csv', encoding='utf-8') as f2:
    f2_csv = csv.reader(f2)
    for i, row3 in enumerate(f2_csv):
        if i >= 1:
            list3.append(row3[0]) #row3[0] 是一列geneid的内容

# 三组数据的画法,用venn3
# g = matplotlib_venn.venn3(subsets=[set(list), set(list2), set(list3)],  # 传入三组数据
#                           set_labels=('Label 1', 'Label 2', 'Label 3'),  # 设置组名
#                           set_colors=("#01a2d9", "#31A354", "#c72e29"),  # 设置圈的颜色,中间颜色不能修改
#                           alpha=0.8,  # 透明度
#                           normalize_to=1.0,  # venn图占据figure的比例,1.0为占满
#                           )
# plt.show()

#两组数据的画法,用venn2
f = venn2(
    subsets=[set(list2), set(list3)],
    set_labels=('me', 'oo'),
    set_colors=("#098154", "#c72e29"),
    alpha=0.6,  # 透明度
    normalize_to=1.0)

f.get_patch_by_id('10').set_edgecolor('red')#左圈外框颜色
f.get_patch_by_id('10').set_linestyle('--')#左圈外框线型
f.get_patch_by_id('10').set_linewidth(2)#左圈外框线宽
f.get_patch_by_id('01').set_edgecolor('green')#右圈外框颜色
f.get_patch_by_id('11').set_edgecolor('blue')#中间圈外框颜色
# plt.show()

plt.annotate('intersection genes',
             color='black',
             xy=f.get_label_by_id('11').get_position() + np.array([0, 0.05]),
             xytext=(20, 80),
             ha='center', textcoords='offset points',
             bbox=dict(boxstyle='round,pad=0.5', fc='grey', alpha=0.6),
             arrowprops=dict(arrowstyle='-|>', connectionstyle='arc3,rad=-0.5', color='black')
             )
plt.show()
plt.savefig('./me-oo') #保存为png图片

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值