基于ggplot2的RNA-seq轉(zhuǎn)錄組可視化:總述和分文目錄

本系列文章的目的:我將首先簡(jiǎn)要介紹一下ggplot2的基本思路,然后使用前面介紹的TCGA數(shù)據(jù)模仿articles中的圖片進(jìn)行數(shù)據(jù)可視化。

其他文章一覽:
從TCGA數(shù)據(jù)庫(kù)下載并整合清洗高通量腫瘤表達(dá)譜-臨床性狀數(shù)據(jù)
TCGA數(shù)據(jù)整合后進(jìn)行DESeq2差異表達(dá)分析和基于R的多種可視化
TCGA數(shù)據(jù)差異分析后生存分析(批量單因素cox回歸/Lasso篩選,多因素cox建模,時(shí)間依賴ROC曲線及KM plot可視化)
TCGA轉(zhuǎn)錄組差異分析后多種基因功能富集分析:從GO/KEGG到GSEA和GSVA/ssGSEA(含基因ID轉(zhuǎn)換)

mRNA-seq轉(zhuǎn)錄組二代測(cè)序從raw reads到表達(dá)矩陣:上中游分析pipeline
miRNA-seq小RNA高通量測(cè)序pipeline:從raw reads,鑒定已知miRNA-預(yù)測(cè)新miRNA,到表達(dá)矩陣【一】
miRNA-seq小RNA高通量測(cè)序pipeline:從raw reads,鑒定已知miRNA-預(yù)測(cè)新miRNA,到表達(dá)矩陣【二】

相信大家對(duì)ggplot2都不陌生。ggplot2包是R以可視化為專長(zhǎng)的特征中不可或缺的一分子。生物醫(yī)學(xué)數(shù)據(jù)的可視化一直都是數(shù)據(jù)闡釋的重要部分,說(shuō)咱們是業(yè)余視覺(jué)設(shè)計(jì)也不為過(guò)。鑒于ggplot2的簡(jiǎn)單明了和功能強(qiáng)大,目前很多articles中工整美觀的figures均出自它之手。

一、ggplot2繪圖的基本思想

使用ggplot2進(jìn)行數(shù)據(jù)可視化是以圖層為基本單位來(lái)進(jìn)行的。繪制圖片的時(shí)候使用系列函數(shù)進(jìn)行層層累加,最后得到含有完整圖片的對(duì)象。

p <- function1()+function2()+function3()+...
p

ggplot2中函數(shù)的大致類別

1. 基礎(chǔ)函數(shù):指定數(shù)據(jù)。

ggplot(data = , mapping = ): 一般使用本函數(shù)指定繪圖的數(shù)據(jù),接下來(lái)的繪圖和調(diào)整函數(shù)均默認(rèn)繼承本函數(shù)中提供的數(shù)據(jù)。data要求數(shù)據(jù)框,mapping參數(shù)需配合aes()函數(shù)指定映射。

aes(): 將data中的對(duì)象傳遞給mapping參數(shù),作為接下來(lái)所有繪圖函數(shù)的輸入數(shù)據(jù)。常見(jiàn)參數(shù)有:x, y, fill, color, size, alpha等,分別代表x軸數(shù)據(jù),y軸數(shù)據(jù),圖形填充分組依據(jù),和線/點(diǎn)上色分組依據(jù)等。

2. 繪圖函數(shù):繪圖操作主體。

常用的有:
geom_density()、geom_violin()、geom_col()、geom_point()、geom_dotplot、geom_boxplot()、geom_smooth()等函數(shù),分別用于繪制密度圖、小提琴圖、條形圖、散點(diǎn)圖/散點(diǎn)圖、箱線圖、回歸擬合線等。

統(tǒng)一的參數(shù)有:
inherit.aes = T/F:是否繼承g(shù)gplot函數(shù)中指定的數(shù)據(jù)。默認(rèn)為T(mén)。

data, mapping:如果上面參數(shù)為F,則需通過(guò)這兩個(gè)參數(shù)另外指定數(shù)據(jù)。當(dāng)然也可以直接使用mapping=aes()補(bǔ)充ggplot函數(shù)中沒(méi)有指定的全局參數(shù),僅用于該函數(shù)使用(如ggplot函數(shù)只指定了x和y,繪制boxplot時(shí)設(shè)置geom_boxplot(aes(fill=...))進(jìn)行分組填充上色。)

color:統(tǒng)一該函數(shù)繪圖的點(diǎn)/線/邊框顏色時(shí)直接使用。
size:函數(shù)繪制內(nèi)容大小設(shè)置。
position:繪圖內(nèi)容的位置設(shè)置。

此外,每個(gè)具體的作圖函數(shù)都有其單獨(dú)的參數(shù),具體可使用help(function)進(jìn)行查詢,常用的后續(xù)實(shí)例操作中也會(huì)使用講解。

3. 注釋函數(shù)

常用的有:
geom_errorbar()、geom_abline()、geom_vline()、geom_hline()、geom_segment()、geom_rect()、geom_tile()、geom_text()、annotate()等,分別用于圖片中誤差棒、對(duì)角線、豎直線、橫線、自由線段、方塊/方塊、文字和小范圍自由注釋等。

注釋函數(shù)的參數(shù)不一,但基本也可以分為 數(shù)據(jù)設(shè)定/坐標(biāo)設(shè)定(如geom_abline的slope和intercept參數(shù)分別設(shè)定斜線的斜率和截距;geom_segment的x/xend/y/end分別設(shè)置線段的起始和結(jié)束的坐標(biāo)位置) 和 樣式調(diào)整(如geom_errorbar中width調(diào)整誤差棒頂端橫線寬度;注釋線條的函數(shù)中l(wèi)inetype調(diào)整線條的類型;size調(diào)整樣式大?。﹥纱箢?。

4. 樣式調(diào)整函數(shù)

最后可以對(duì)ggplot2作出的圖形進(jìn)行全方面參數(shù)的調(diào)整:

(1)坐標(biāo)軸的調(diào)整:
xlim()、ylim()調(diào)整連續(xù)坐標(biāo)軸可視化的范圍。
xlab()、ylab()設(shè)置x、y軸的sub_titles。
scale_x_continuous()、scale_x_discrete()分別設(shè)置連續(xù)/離散 坐標(biāo)的刻度breaks和labels(y軸同理)。
ggtitle()可以設(shè)置圖片的標(biāo)題。

(2)繪圖對(duì)象顏色的調(diào)整:
scale_fill_manual()、scale_fill_gradient()、scale_fill_gradient2()等用于設(shè)置填充繪圖對(duì)象的顏色:手動(dòng)設(shè)置分組變量所對(duì)應(yīng)的的顏色、和連續(xù)變量漸變的顏色。
scale_color_manual()、scale_color_gradient()、scale_color_gradient2()等用于線、點(diǎn)或邊框的顏色。

(3)主題的調(diào)整:
已有一些ggplot2預(yù)設(shè)好的主題可以直接調(diào)用,如theme_bw(),theme_gray()等。

theme():該函數(shù)功能非常強(qiáng)大,可以對(duì)圖片(panel)的背景、分割線、字體大小、x/y軸、圖片的標(biāo)題(與xlab、ylab、ggtitle功能重合)、圖例(legend)的位置、breaks等進(jìn)行設(shè)置。

(4)圖例的調(diào)整:
除了theme()中對(duì)圖例可進(jìn)行許多調(diào)整外,scale_color_****()、scale_fill_****()、scale_size_****()、scale_alpha_****()等函數(shù)中的name、breaks、labels、limits等參數(shù)可以分別對(duì)各自主管的圖例類型(如size只負(fù)責(zé)size的legend,color和fill分別負(fù)責(zé)點(diǎn)/線,和填充對(duì)象的legend)的標(biāo)題名、圖例刻度、刻度名、展示范圍進(jìn)行設(shè)置。

Optional:部分兼容ggplot2的補(bǔ)充包:

如beeswarm包,可繪制蜂群點(diǎn)圖。
如ggsignif包和ggpubr包,可進(jìn)行p值和顯著性的注釋。
...

第一個(gè)示例

一串較為典型的ggplot2作圖代碼大概就是這樣的:

#generate the data frame to be graphed.
tutorial_df <- data.frame('values'=c(1,2,3,4), 
                          'groups'=c('A','B','C','D'), 
                          'colors'=c('color1','color1','color2','color2'), 
                          'fills'=c('color3','color4','color3','color4'))

#tell ggplot2 how we'll order groups in the x-axis.
tutorial_df$groups <- factor(tutorial_df$groups, levels = c('D','C','B','A'), ordered = T)

#draw the plot.
p <- ggplot(tutorial_df, aes(x=groups, y=values, color=colors, fill=fills))+
  geom_col(width = 0.5, size = 1, linetype = 1)+
  scale_color_manual(values = c('color1'='navy', 'color2'='blue'))+
  scale_fill_manual(values = c('color3'='red', 'color4'='yellow'))+
  xlab('this is x-axis')+ylab('this is y-axis')+
  ggtitle('tutorial picture')+
  theme_gray()+
  theme(panel.grid = element_line(color = 'purple'), plot.title = element_text(hjust = 0.5))
p

將代碼用自然語(yǔ)言翻譯一下:以tutorial_df數(shù)據(jù)框中的groups列作為x軸分組依據(jù),values列作為y軸值,以colors列作為邊框顏色依據(jù),以fills作為填充顏色依據(jù)。然后繪制條形圖,條寬度為0.5,邊框size為1,邊框線為實(shí)線。隨后手動(dòng)設(shè)置邊框和填充顏色的種類,設(shè)置x軸、y軸小標(biāo)題以及圖片主題。最后在使用預(yù)設(shè)主題theme_gray的基礎(chǔ)上,將背景分割線設(shè)為紫色,標(biāo)題設(shè)置為居中。

得到的圖片如下,嗯真的很辣眼睛(0_0),但是我想作為第一個(gè)示例應(yīng)該能很清楚地展示每個(gè)函數(shù)和各個(gè)參數(shù)的作用。

an ugly tutorial demonstration of ggplot2

注:
知識(shí)點(diǎn)來(lái)了:對(duì)ggplot2分組在坐標(biāo)軸上的順序進(jìn)行調(diào)整時(shí),需要將dataframe中的相應(yīng)變量設(shè)置成因子型(factor),用levels參數(shù)進(jìn)行排序,隨后的可視化順序就會(huì)【按照因子級(jí)別從小到大】順序排列。

二、ggplot2在生物醫(yī)學(xué)文獻(xiàn)中的基礎(chǔ)可視化示例

接下來(lái)一系列實(shí)例操作對(duì)于理解ggplot2的繪圖思路及主要參數(shù)應(yīng)用非常有效!

既然使用了TCGA數(shù)據(jù)庫(kù)獲得了一些基礎(chǔ)的分析結(jié)果,那接下來(lái)我嘗試模仿一些文獻(xiàn)做一些基礎(chǔ)的數(shù)據(jù)可視化工作。

獲取數(shù)據(jù):

基于第一篇文章從TCGA數(shù)據(jù)庫(kù)下載并整合清洗高通量腫瘤表達(dá)譜-臨床性狀數(shù)據(jù),我們下載并清洗TCGA數(shù)據(jù)庫(kù)中white人種的LUSC肺鱗癌mRNA-seq轉(zhuǎn)錄組數(shù)據(jù)。

隨后根據(jù)第二篇文章TCGA數(shù)據(jù)整合后進(jìn)行DESeq2差異表達(dá)分析和基于R的多種可視化進(jìn)行了基于DESeq2的差異分析。

在進(jìn)行可視化實(shí)例前,我們假設(shè)已經(jīng)獲得并需要如下對(duì)象:
(1)mRNA_exprSet:FPKM expression matrix of genes from cancer/normal tissue.
(2)condition_table:a data frame containing sample type info and IDs of each sample.
(3)clinical_trait:a data frame recording tumor stage, gender and ID info of each sample.
(4)expr_vst:vst-transformed normalized counts matrix of qualified genes processed by DESeq2 which is suitable for data visualization.

可視化實(shí)例(點(diǎn)擊藍(lán)色字體進(jìn)入新頁(yè)面查看)

(1)測(cè)序結(jié)果概覽:基因表達(dá)量rank瀑布圖,高密度表達(dá)相關(guān)性散點(diǎn)圖,注釋特定基因及errorbar的表達(dá)相關(guān)性散點(diǎn)圖繪制

(2)單/多個(gè)基因在組間同時(shí)展示的多種選擇:分組小提琴圖、分組/分面柱狀圖、單基因蜂群點(diǎn)圖拼圖的繪制

(3)配對(duì)樣本基因表達(dá)趨勢(shì):優(yōu)化前后的散點(diǎn)連線圖+拼圖繪制

(4)主成分PCA分析:分析流程+散點(diǎn)及分組核心區(qū)域繪制

喜歡的朋友就點(diǎn)個(gè)贊吧!

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

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

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