
?本人最近在做比較基因組學(xué)分析的時(shí)候,發(fā)現(xiàn)用韋恩圖來(lái)表示共有、特有的基因家族雖然直觀,但一旦物種數(shù)目增多,就會(huì)變得不好看。于是,我?guī)熜痔嶙h可以用Upset圖來(lái)代替,我仿佛打開(kāi)了新世界的大門(mén),因?yàn)檫@種upset圖確實(shí)在物種數(shù)多的情況下比韋恩圖好看太多了。
這個(gè)圖主要由三部分組成,讓我們通過(guò)一個(gè)簡(jiǎn)化的日常生活場(chǎng)景來(lái)解釋這個(gè)圖。
假設(shè)你有多個(gè)不同的水果籃,每個(gè)籃子都有不同的水果。
左邊的條形圖(集合大小柱狀圖):
這就像每個(gè)籃子旁邊都有一個(gè)標(biāo)簽,告訴你這個(gè)籃子里有多少個(gè)水果。所以,如果一個(gè)籃子里有10個(gè)蘋(píng)果,那么它的標(biāo)簽上就寫(xiě)著10。
上面的條形圖(交集大小柱狀圖):
這個(gè)部分告訴你,如果你從不同的籃子里同時(shí)拿出水果,你會(huì)得到多少個(gè)水果。比如,你可能同時(shí)從籃子A和籃子B中拿出3個(gè)蘋(píng)果和2個(gè)香蕉。那么這個(gè)上面的條形圖就會(huì)顯示5,表示你總共拿了5個(gè)水果。
下面的點(diǎn)(矩陣視圖):
這就像一個(gè)清單,告訴你哪些籃子被同時(shí)考慮了。如果你看到一個(gè)點(diǎn)在籃子A和籃子B下面,那就意味著你同時(shí)從這兩個(gè)籃子里拿出了水果。
所以,總的來(lái)說(shuō),這個(gè)圖就是一個(gè)高級(jí)的“水果拿取記錄”。左邊告訴你每個(gè)籃子里有多少水果,上面告訴你你一次從多個(gè)籃子里拿了多少水果,而下面的點(diǎn)則告訴你每次你是從哪些籃子里拿的。
那么,了解完Upset圖后,現(xiàn)在我們就來(lái)看看如何基于這個(gè)R包繪制Upset圖。
? 首先,我之前繪制韋恩圖用的是venn包以及VennDiagram包,其實(shí)UpSetR包的輸入文件處理成和Venn包所需的輸入文件一致就可以了。
? 很簡(jiǎn)單,最基礎(chǔ)的代碼基本上就是:
library(UpSetR)
upset(fromList(sets),nsets = 10)?
很多細(xì)節(jié)都是可以調(diào)整的,大家可以通過(guò)?upset查看所有支持的參數(shù),下面介紹一些常用的。
upset(fromList(sets),
? ? ? order.by = "freq", # 排序方式
? ? ? nsets = 5, # 展示幾個(gè)集合,按照數(shù)量從大到小排列,或者使用sets參數(shù)指定集合名字
? ? ? mb.ratio = c(0.55,0.45), # 條形圖和矩陣的相對(duì)比例
? ? ? number.angles = 30, # 條形圖上面數(shù)字角度
? ? ? point.size = 3, # 點(diǎn)的大小
? ? ? line.size = 1.2, # 線條粗細(xì)
? ? ? mainbar.y.label = "size of intersection", # 上面條形圖的標(biāo)題
? ? ? sets.x.label = "the number of each sets", # 坐標(biāo)條形圖的標(biāo)題
? ? ? text.scale = c(1.3, 1.3, 1, 1, 2, 1.2) # 元素大小
? ? ? )
排序方式: 使用order.by = "freq"可以確保交集的大小從大到小進(jìn)行排序。
展示集合數(shù)量:nsets = 5將只顯示前五個(gè)最大的集合。
條形圖與矩陣比例:mb.ratio = c(0.55,0.45)決定了主條形圖和矩陣的比例。
角度與大小調(diào)整: 通過(guò)number.angles = 30和point.size = 3及l(fā)ine.size = 1.2來(lái)調(diào)整條形圖數(shù)字的角度、點(diǎn)的大小和線條的粗細(xì)。
標(biāo)題和標(biāo)簽: 為上面的條形圖和坐標(biāo)條形圖增加描述性標(biāo)題。
元素大小: 使用text.scale來(lái)調(diào)整文本和標(biāo)簽的大小。
顏色調(diào)整: 選擇一種和諧的顏色方案,比如深藍(lán)色、火磚紅和灰色。
特定列的個(gè)性化: 使用queries參數(shù)來(lái)突出顯示指定的交集,并給它們賦予獨(dú)特的顏色。
text.scale參數(shù)在 UpSet 圖中控制不同文本元素的大小。以下是每一個(gè)元素的詳細(xì)解釋?zhuān)?/p>
intersection size title:
這是上方條形圖的標(biāo)題。它描述了交集的大小,即兩個(gè)或多個(gè)集合共有的元素?cái)?shù)量。
intersection size tick labels:
這是上方條形圖y軸的刻度標(biāo)簽。它們通常是數(shù)字,表示交集中元素的數(shù)量。
set size title:
這是左邊(或右邊)條形圖的標(biāo)題。它描述了每個(gè)單獨(dú)集合中的元素?cái)?shù)量。
set size tick labels:
這是左邊(或右邊)條形圖y軸的刻度標(biāo)簽。這些標(biāo)簽表示每個(gè)單獨(dú)集合中的元素?cái)?shù)量。
set names:
這些是集合的名稱(chēng)。在矩陣視圖中,這些名稱(chēng)與每行相對(duì)應(yīng),表示不同的集合。
numbers above bars:
這是上方條形圖上的數(shù)字。它們表示每個(gè)交集中元素的實(shí)際數(shù)量,直接放置在每個(gè)柱子上方。
基于以上參數(shù),我們就可以自由地調(diào)整Upset圖了。