主成分分析「 三維圖 」
- 2019 年 11 月 11 日
- 筆記
主成分分析(Principal Component Analysis,PCA),是一種降維方法,也是在文章發表中常見的用於顯示樣本與樣本之間差異性的計算工具。在上一次教程中,我們教大家如何繪製二維主成分分析圖,不過有時候二維的平面沒有辦法展示出樣本之間的差異,所以需要用更多維度,比如三維主成分分析圖來展示。今天的教程,我們以一篇發表在Blood (IF = 16.562)上的文章為例進一步解讀PCA的圖形繪製。在這個實例中,通過對芯片表達譜數據進行PCA分析,觀察前三個PC(PC1, PC2, PC3),可以看出細胞按照不同來源:peripheral blood (PB),bone marrow (BM), 和lymph nodes (LN)分成三組。

本次教程為大家帶來是,是如何根據表達譜數據,通過運用主成分分析的方法,顯示樣本與樣本之間的差異性,並且在三維坐標上展示這些差異。

01
數據讀取
首先我們加載需要用到的R包,scatterplot3d包用於作圖gmodels包用於計算PCA。

讀入表達譜數據並顯示文件前6行,每一列為一個樣本,每一行為一個基因。我們使用表達譜樣本一共有10個,其中M1到M5為Case,M6-M10為control。


02
主成分分析
使用gmodels包中的fast.prcomp函數計算PCA。該包計算運行所用時間比R內置prcomp函數要快很多。計算完成後查看PCA計算前6行,可以看出最終的結算結果為一個矩陣,一共有10列10行,每一行為一個樣本,每一列為一個主成分(PC)。我們就用這樣一個PCA計算結果,來看Case和Control這兩組樣本之間的差異。然後建立一個data.frame,將PC數據和表型數都存入進來。這一步與上一版教程是一樣的~


然後,便是繪圖的時刻了~
03
基礎繪圖
首先,我們使用前三個PC,繪製基本三維圖。


這樣,一張三維圖就製作完成了。當然,如果我們真的在ppt或者文章中繪製成這個樣子,肯定會被老闆罵的一(gou)無(xue)是(lin)處(tou)~ 所以,我們需要對圖進行美化和調整。
04
初級調整
我們將case和control用不同的顏色進行展示。


05
中級調整
從這張圖中,我們可以基本上出case和control在三維空間中分成了兩組。當然,圖片中的點有些小,而且三維圖的角度還不夠,所以需要進行進一步調整。


同樣,我們也可以為case和control增加不同的形狀。


06
高級調整
不知道大家是否發現了一個問題,我們繪製的這張三維圖上,是沒有圖注信息的。雖然我們可以根據代碼中的顏色和形狀來判斷哪些是case,哪些是control,但是這樣畢竟不方便,所以我們需要為圖片加上圖注。


這樣,case 和control就一目了然了~
07
終級調整
當然,在這張圖上,我們一共有10個樣本,如果我們想知道哪些點代表哪些樣本,通過這張圖是非常不方便的。所以我們需要以text的方式,將樣本名加在三維圖中。


這樣,每一個樣本都可以看的清清楚楚。不過,如果是100個樣本,我們想要將所有樣本顯示出來是非常不現實的,大部分我們只需要將特定的樣本顯示出來。給數據新建一個Label,顯示那些重要的樣本。


結語
這樣,一張完美的三維PCA散點圖就誕生了~相信這樣一張圖,會為大家的文章帶來無限可能性。科研做圖的一次次完善,都與高分雜誌距離的每一次次縮減。我們與頂級雜誌的距離,也許只差一張完美的圖。
未經許可請勿隨意轉載,
版權事宜由上海辰明律師事務所提供法務支持