在之前的《繪制這種漂亮的桑基圖只需“一步”?》和《3分文章和30分文章圖表差在哪里?》兩篇文章中已經(jīng)介紹過(guò)?;鶊D(Sankey plots)了,但目前在文章中還是比較少見(jiàn)。 ?;鶊D主要用來(lái)展示數(shù)據(jù)的“流動(dòng)”變化,分支的寬度表示流量的大小,應(yīng)用于能源流向、收入支出、人員流動(dòng),生物群落豐度變化等數(shù)據(jù)的可視化。但在之前提到的一篇文獻(xiàn)中,作者巧妙地用?;鶊D來(lái)可視化差異ceRNA共表達(dá)網(wǎng)絡(luò),非常直觀。作者構(gòu)建的 ceRNA network包括26 個(gè)lncRNA, 4個(gè)miRNAs, 6個(gè) mRNAs,如下: 
(Cancer Cell International, 2019) 文章作者用到的R包是ggalluvial,安裝方法非常簡(jiǎn)單,直接用install.packages(“ggalluvial”)函數(shù)在線安裝即可。我這里就用這個(gè)R包為大家重現(xiàn)原文中的桑基圖吧! 本文用到的范例數(shù)據(jù)來(lái)自原文的附錄文件(Table S4),下載鏈接:https://www.ncbi.nlm./pmc/articles/PMC6458652/#載入ggalluvial包; library(ggalluvial) #讀入數(shù)據(jù); df <- read.table('network.txt',sep= '\t',header = T) #檢查數(shù)據(jù)的前6行; head(df)

# 直接使用原始數(shù)據(jù)(寬數(shù)據(jù))繪圖; # 繪制alluvium,width調(diào)整結(jié)點(diǎn)處條帶水平寬度;knot.pos調(diào)整曲率;reverse調(diào)整著色順序; p1<-ggplot(data = df,aes(axis1 = lncRNA,axis2 = miRNA,axis3 = mRNA, y = Freq))+ geom_alluvium(aes(fill = mRNA),width = 0.1, knot.pos = 0.1, reverse = F) p1

# 繪制stratum,添加文字標(biāo)簽并隱藏圖例; p2<-p1+geom_stratum(fill='white',color='skyblue',alpha= .7,width = 1/7)+ geom_text(stat = 'stratum', size =1.5,color='black',label.strata = T)+ guides(fill = FALSE) p2

#修改橫軸的標(biāo)簽; p3<-p2+ scale_x_discrete(limits = c('lncRNA','miRNA','mRNA'),expand = c(0, 0))+ xlab('') + ylab('')
#自定義主題; mytheme1<-theme_bw() + theme(panel.grid =element_blank()) + theme(panel.border = element_blank()) + theme(axis.line = element_blank(),axis.ticks =element_blank(),axis.text.y =element_blank()) p4<-p3+mytheme1 p4
 使用寬數(shù)據(jù)畫(huà)圖比較直觀,容易理解,但如果想給不同的stratum添加不同的顏色就不是很方便。其實(shí),ggalluvial也支持長(zhǎng)數(shù)據(jù),畢竟是基于ggplot2的。#檢查數(shù)據(jù)是否符合要求; head(df) is_alluvia_form(df,weight ='Freq') # 轉(zhuǎn)成長(zhǎng)數(shù)據(jù)格式; df_lodes <- to_lodes_form(df,key ='x', value = 'stratum', id = 'alluvium',axes =1:3) #檢查轉(zhuǎn)換后的數(shù)據(jù)是否符合作圖要求; head(df_lodes,12) is_lodes_form(df_lodes,key = 'x',value = 'stratum',id = 'alluvium',weight ='Freq')

#自己生成漸變色; mycol3=colorRampPalette(c('#00abef','#64b036','#ffe743','#64b036','#00abef'))(36) 對(duì)于繪圖方法,除了數(shù)據(jù)映射方式,其他參數(shù)的用法與上文相似,這里就不做代碼分解演示啦。p5<-ggplot(df_lodes,aes(x = x, stratum =stratum, alluvium = alluvium, fill = stratum, label = stratum)) + scale_x_discrete(expand = c(0, 0)) + geom_flow(width = 0.2, knot.pos = 0.1) + geom_stratum(alpha = .9,color='grey20',width = 1/7) + geom_text(stat = 'stratum', size =1.5,color='black') + scale_fill_manual(values = mycol3) + xlab('') + ylab('') + theme_bw() + theme(panel.grid =element_blank()) + theme(panel.border = element_blank()) + theme(axis.line = element_blank(),axis.ticks =element_blank(),axis.text.y =element_blank())+ guides(fill = FALSE) p5
繪圖的結(jié)果如下:
 如果用ggplot2的默認(rèn)配色,其實(shí)也挺好看的,如下:
#使用文章中圖表的顏色集; mycol <-rep(c('#223D6C','#D20A13','#FFD121','#088247','#11AA4D','#58CDD9','#7A142C','#5D90BA','#029149','#431A3D','#91612D','#6E568C','#E0367A','#D8D155','#64495D','#7CC767','#223D6C','#D20A13','#FFD121','#088247','#11AA4D','#58CDD9','#7A142C','#5D90BA','#029149','#431A3D','#91612D','#6E568C','#E0367A','#D8D155','#64495D','#7CC767','#223D6C','#D20A13','#FFD121','#088247','#11AA4D','#58CDD9','#7A142C','#5D90BA','#029149','#431A3D','#91612D','#223D6C','#D20A13','#FFD121','#088247','#11AA4D','#58CDD9','#7A142C','#5D90BA','#029149','#431A3D','#91612D','#6E568C','#E0367A','#D8D155','#64495D','#7CC767','#223D6C','#D20A13','#FFD121','#088247','#11AA4D','#58CDD9','#7A142C','#5D90BA','#029149','#431A3D','#91612D','#6E568C','#E0367A','#D8D155','#64495D','#7CC767'),3)
如果想使用文章中的顏色,可將mycol變量賦值給scale_fill_manual(values = mycol);同時(shí)不想讓stratum周圍顯示白色的“空白”,可將geom_flow()的width設(shè)為小于0.2的值, 得到效果如下:
 其實(shí)我之前一直不喜歡這個(gè)圖,因?yàn)轭伾啵墒强淳昧艘簿筒挥X(jué)得難看了。如果喜歡“直”的,可將knot.pos 的數(shù)值調(diào)為0,得到下圖的效果: 今天的內(nèi)容就到這里啦,如果你還是沒(méi)學(xué)會(huì),可以考慮報(bào)名我們的轉(zhuǎn)錄組培訓(xùn)班呀~培訓(xùn)時(shí)間:2019年12月9日-12月13日培訓(xùn)地點(diǎn):基迪奧公司(廣州大學(xué)城青藍(lán)街)轉(zhuǎn)錄組培訓(xùn)班是基迪奧“元老級(jí)”的精品培訓(xùn)班。隨著測(cè)序技術(shù)的發(fā)展,基迪奧項(xiàng)目經(jīng)驗(yàn)的積累,我們已將轉(zhuǎn)錄組培訓(xùn)班的培訓(xùn)內(nèi)容更新到了4.0版本。專題理論實(shí)操:數(shù)據(jù)范例靈活,學(xué)員可以帶上自己的轉(zhuǎn)錄組數(shù)據(jù)進(jìn)行實(shí)操,解答數(shù)據(jù)挖掘問(wèn)題;多組學(xué)進(jìn)階提升:培訓(xùn)班在講解轉(zhuǎn)錄組數(shù)據(jù)挖掘的基礎(chǔ)上,拓展轉(zhuǎn)錄組與其他組學(xué)的多組學(xué)關(guān)聯(lián)分析和數(shù)據(jù)挖掘;數(shù)據(jù)的動(dòng)態(tài)挖掘:基于基迪奧特有的在線平臺(tái)Omicsmart的動(dòng)態(tài)數(shù)據(jù)挖掘,學(xué)員可以完成個(gè)性化分析,定制專屬結(jié)題報(bào)告。參與培訓(xùn)的學(xué)員將獲得價(jià)值2400元的6例樣本數(shù)據(jù)的動(dòng)態(tài)交互平臺(tái)Omicsmart分析使用權(quán),可隨心所欲地對(duì)自己的原始數(shù)據(jù)進(jìn)行個(gè)性化分析!課程表 
|