一、韋恩圖
恩圖一般指維恩圖。維恩圖(英語:Venn diagram),或譯Venn圖、文氏圖、溫氏圖、韋恩圖,是在所謂的集合論(或者類的理論)數(shù)學(xué)分支中,在不太嚴(yán)格的意義下用以表示集合(或類)的一種草圖。
在轉(zhuǎn)錄組分析中,常常用韋恩圖來表示各組之間差異表達(dá)基因數(shù)量的關(guān)系。
二、代碼實現(xiàn)
python畫圖我們首先想到的是matplotlib庫,強大的畫圖庫。
然而,matplotlib庫本身并不能繪制VENN圖,需要借助第三方庫matplotlib_venn,當(dāng)然matplotlib_venn庫也是依賴matplotlib庫的。
下面,我們將分別利用matplotlib_venn庫的venn2和venn3函數(shù)來繪制兩組數(shù)據(jù)和三組數(shù)據(jù)的Venn圖。
venn2
import matplotlib.pyplot as plt
from matplotlib_venn import venn2
venn2(
subsets = [set([1,2,3]),set([42,3,4,5])],
set_labels=('A','B'),
set_colors=('r','g'))

image
- subsets:必須的參數(shù),即繪圖所需的數(shù)據(jù)集,subsets接受三種格式的輸入數(shù)據(jù):
1.1 一個list,包含兩個set元素,set中包含兩個數(shù)據(jù)集集體的數(shù)據(jù),即上述代碼使用的方法;
1.2 一個三個key字典,key是兩個字符的二進(jìn)制編碼方式,所以三個key必須是“10”,“01”和“11”,value分別代表對應(yīng)區(qū)域的大小,{'10': 2, '01': 3, '11': 1}
1.3 一個包含三個數(shù)字的list,三個數(shù)字分別代表圖形三部分的大小,[2,3,1] - set_labels:設(shè)置數(shù)據(jù)的標(biāo)簽,即圖形中兩組數(shù)據(jù)的名稱
- set_colors:設(shè)置圖形的顏色
venn3
import matplotlib.pyplot as plt
from matplotlib_venn import venn3
my_dpi=100
plt.figure(figsize=(800/my_dpi, 600/my_dpi), dpi=my_dpi)#控制圖尺寸的同時,使圖高分辨率(高清)顯示
venn3(
subsets = [set([1,2,3,5,9]),set([1,2,4,6]),set([1,3,4,7])],
set_labels=('A','B','C'),
set_colors=('r','g','b')
)
plt.savefig('./test.jpg')
plt.show()

image
- 科研作圖對分辨率有要求,可通過plt.figure()進(jìn)行調(diào)整,圖像的大小和dpi。
- 注意,圖片的保存plt.savefig()一定要放在plt.show()之前,不然保存的就是一張空白圖片。
matplotlib_venn庫只能實現(xiàn)兩組或者三組數(shù)據(jù)的韋恩圖的繪制,更多數(shù)據(jù)集暫時不支持。(哭笑.jpg)