Python畫韋恩圖

一、韋恩圖

恩圖一般指維恩圖。維恩圖(英語: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
  1. 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]
  2. set_labels:設(shè)置數(shù)據(jù)的標(biāo)簽,即圖形中兩組數(shù)據(jù)的名稱
  3. 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
  1. 科研作圖對分辨率有要求,可通過plt.figure()進(jìn)行調(diào)整,圖像的大小和dpi。
  2. 注意,圖片的保存plt.savefig()一定要放在plt.show()之前,不然保存的就是一張空白圖片。

matplotlib_venn庫只能實現(xiàn)兩組或者三組數(shù)據(jù)的韋恩圖的繪制,更多數(shù)據(jù)集暫時不支持。(哭笑.jpg)

參考資料

維恩圖_百度百科 (baidu.com)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容