R語言給PCA加個小圈圈

2021-02-14 基迪奧生物

Hello,小夥伴們,今天這篇推文上周發過一次,但因為部分文字內容有誤沒有審查準確,現在修改後再推一次。

小夥伴們,在遇到組學實驗數據分析得時候,是少不了繪製PCA圖的,但是除了常規的PCA圖以外,往往也需要在我們的流程結果的PCA上展現組內樣品的分布範圍:


像這樣的

這樣的

其實,本質上這些圓圈是在PCA圖的基礎上,加了一個置信區間。但是我之前都是在ppt上手動加的。這樣總覺得哪裡不太對,萬一這樣和老師說,到時候發文章被審稿人問起怎麼辦呢?

所以這種分析要求,最好的方法是提交給分析。另外我們公司R語言培訓中也有專門的PCA的圖形繪製。其中也涉及了用ggplot2來繪製PCA加圈的圖。例如我們這篇文章的封面圖片就是用ggplot2畫的。但是ggplot功能強大,也就意味著參數多啊,所以還是我們的ggord簡單易上手,另外還可以加入變量的」小線條「。

所以老師如果想自己動手,豐衣足食的話。別急,我們有簡化版的PCA繪製教程。用R語言繪製完成後,再用PS和AI適當修改一下就可以大功告成了。

PCA降維分析,不僅可以展現我們的樣品重複性,還可以用來發現內在的生物學規律。所以這次我們就圍繞這兩個主題開展今天文章的內容。

首先今天我們用的R包是ggord(https://github.com/fawda123/ggord)

因為這個包並不放在CRAN中,所以直接用install.packages(「ggord」)是不可行的。

所以我們需要在github上下載。

#首先安裝devtools

install.packages('devtools')

library(devtools)

#我們再安裝ggord

install_github('fawda123/ggord')

library(ggord)

好的,接下來就要進入正題了,以我們的流程中的表達量總表為例

列名為樣品名稱,分為A,B,C,D四組,每組4個生物學重複。

行名為基因ID

數值是RPKM值

library(ggord)

library(ggplot2)#我們需要一些ggplot2功能,如果需要ggsave保存的話

getwd()#檢查一下路徑

setwd("C:/Users/woney/Desktop")#將工作目錄改成桌面

pca_data=read.table("all.txt",header=T,sep="\t",row=1)#讀取表格

pca_data=t(as.matrix(pca_data))#將表達量總表反轉,PCA函數計算的是展現的第一列的ID

pca_group=factor(c(rep('A',4),rep('B',4), rep('C', '4'), rep('D', '4')))#分組,後續可以自己設置對應的組名,rep('組名','樣品數')

pca1=prcomp(pca_data,center=TRUE,retx=T)#prcomp是R自帶的pca分析函數

p1 <- ggord(pca1, grp_in = pca_group, arrow=0, vec_ext =0,txt=NULL)

噠噠噠,出圖如下

     
然後,我們輸入?ggord就可以查看具體的參數了。根據幫助文檔的參數就可以自行修改。

我簡單列舉一下我做的參數修改。

變成多邊形

p2 <-ggord(pca1, grp_in = pca_group, arrow=0,vec_ext = 0,txt=NULL,ellipse=F,ellipse_pro=0.68,hull=T)

修改置信區間,以及將橢圓改成空心

p3<-ggord(pca1, grp_in = pca_group, arrow=0,vec_ext =0,txt=NULL,ellipse=T,ellipse_pro=0.68,poly = F)

不展示點

p4 <-ggord(pca1, grp_in = pca_group, arrow=0,vec_ext =0,txt=NULL,ellipse=F,ellipse_pro=0.68,hull=T,obslab =TRUE,repel=TRUE)

此外,ggord是基於ggplot2基礎上繪圖,那麼理論上ggplot2的圖層語法是可以用的。

比如加上標籤

library(ggplot2)

p5=p1+geom_text(aes(label=rownames(pca_data)),vjust=1.5,colour="red")

或者theme()主題都是可以的。總之ggord設置了大量的參數,都可以修改圖形,其中作者也寫了一些例子(https://github.com/fawda123/ggord)或者參考幫助文檔中的參數(?ggord),可以幫助我們達成我們的目的。

那麼第二點,我們如果想做成有線條和箭頭來展現我們數據中的一些變量之間的關係呢。其實呢,在PCA中,最原始的就是會把其中的一些變量給展現出來,但是平時的分析中,我們都不會畫出來,大家可以想像一下,當幾萬的基因代表的線條展現出來的時候。圖形長什麼樣子。

通過某個變量所代表的線條在PC1和PC2上的投影,我們可以看出這個變量對樣本分離的貢獻度,線條越長,代表投影越大,影響越顯著,同時兩個線條之間的夾角,可以理解為兩個變量之間的相關性,夾角小於90度,可以認為兩個變量正相關,大於90度,可以認為兩個變量負相關。

 

那麼具體又該如何去畫呢,其實用ggord是很簡單去實現的。(其實ggord可以畫很多圖,有CCA,RDA,MAC,LDA等等)

 

我們以16s測序為對象,我們的項目中會有一個表格對各個樣本的α-多樣性指數值數匯總,存於 04.alpha_diversity\summary.alpha_diversity.xls

如果像展現環境因子與多樣性指數之間的關係,可以把環境的理化因子放入其中。如下表

數據整理完,就可以開始畫圖了。

library(ggord)

library(ggplot2)

getwd()#檢查一下路徑

setwd("C:/Users/woney/Desktop")#將工作目錄改成桌面

pca_data=read.table("summary.alpha_diversity.xls",header=T,sep="\t",row= 1)#讀取表格不需將表達量總表反轉,PCA函數計算的是展現的第一列的ID

pca_group=factor(c(rep('SN','3'),rep('SNP','3'), rep('SNPK','3')))#分組,後續可以自己設置對應的組名

pca1=prcomp(pca_data,center=TRUE,retx=T)#prcomp是R自帶的pca分析函數

p1 <-ggord(pca1, grp_in = pca_group, arrow=0.3, vec_ext =700,txt=5,repel=T)

 

參數也是自己可以修改,結果如下:

我們簡單的可以推測,其中PH和TN影響最大,鹽度與α-多樣性指數呈負相關,溫度呈現正相關。

今天的內容就到這裡啦~

參考文獻

https://github.com/fawda123/ggord

https://doi.org/10.1016/j.soilbio.2016.04.005

相關焦點

  • 初見|-PCA分析原理及R語言實現
    那麼收集到這些指標如果進行主成分分析,或許可以綜合成幾個主成分,或許其中第一個主成分是和豬的體長、胸圍、體重等有關的,這個主成分就可以用來反映豬體型的大小,而第二個主成分合成出來可能與乳頭數、斷奶存活數、產仔量、性成熟期有關,或許就能代表成為豬的繁殖性能的指標,而如果你發現例如「耳大小」這個指標與第二主成分相近,那麼或許可能說明豬頭面部形態結構或許和耳朵的大小是有關的。
  • R語言繪圖--PCA圖
    R語言是一門專門針對統計繪圖等需求設計的程式語言,在R語言中,內置了PCA分析的函數prcomp。直接調用這個函數可快速針對一組數據進行PCA分析。配合ggplot2等繪圖包,可以方便的生成PCA分析可視化結果。以下是以一個真實數據集為例,為大家演示如何繪製PCA圖--該數據共包含300個樣品的轉錄本表達量數據。
  • R語言 PCA主成分分析
    微信公眾號:生信小知識關注可了解更多的教程及生信知識。問題或建議,請公眾號留言;R語言 PCA主成分分析前言統計學背景知識協方差相關係數函數總結實例講解1.載入原始數據2.作主成分分析3.結果解讀4.畫主成分的碎石圖並預測5.PCA結果繪製後記前言PCA分析大家肯定經常看到,但是你真的懂PCA分析的結果嗎?
  • 用R語言畫三維PCA圖
    代碼來源於論壇貼,樓主自學的R語言,並把代碼貼出來共享,膩害~----代碼開始了----setwd("/Users/pca/")#設置工作目錄,windows可能不一樣,應該是C:/pca:這個樣子吧library(plot3D)#加載R包,沒有的話自己安裝一下library(scatterplot3d)#加載R包,沒有的話自己安裝一下
  • R做PCA主成分分析
    PCA的數學原理 http://blog.codinglabs.org/articles/pca-tutorial.html主成分分析(Principal components analysis)-最大方差解釋http://www.cnblogs.com/jerrylead/archive/2011/04/18/2020209.html
  • 主成分分析(PCA)在R 及 Python中的實戰指南
    <- train.data[,1:31]#運行決策樹> install.packages("rpart")> library(rpart)> rpart.model <- rpart(Item_Outlet_Sales ~ .
  • PCA主成分分析
    為了證明奇異值分解定理,先準備2個關鍵引理作為鋪墊。有了前面2個引理的準備,下面來證明奇異值分解定理。導庫讀取數據及可視化原數據只有2個特徵,可以很好的進行二維平面可視化。def visual_pca(myX, K): #可視化pca    mean, std, U, S, V, myZ, myX_rec, proj_error  = run_pca(myX, K)    proj_x ,proj_y = [myX_rec[0,0], myX_rec[-1,0]], [myX_rec[0,1
  • 【R技能】PCA在R語言中的實現
    本教程主要展示 PCA 在 R 語言中的實現和可視化。數據準備所用數據為 iris 數據集。
  • 「語言藝術小課堂」正音訓練——聲母r
    一起來學普通話親愛的大朋友、小朋友們,大家好!讓我們一起為說一口正確、標準、好聽的普通話努力!01理論內容聲母r發音要領:發音時,舌尖上翹,靠近硬顎前部,留出窄縫,嗓子用力發聲,氣流從窄縫中擠出,摩擦成音,聲帶顫動。
  • 黃金圈圈圈圈圈圈圈圈圈圈圈圈
    歌詞:逐夢 逐夢 逐夢演藝圈圈圈圈圈圈圈圈圈圈圈圈,我們是純潔純潔純潔純潔純潔的少年這麼有才華的歌詞,此是我等眾生能感受。希望部分國產電影圈,不要在自己塑造的假想圈,意淫著自己的功名圈圈圈圈圈圈圈圈圈圈圈圈圈。說到圈,其實今天要聊的這部電影,也和圈有關係呢!(這個轉場轉得好硬!嗯。)那就是《王牌特工2:黃金圈圈圈圈圈圈》,對不起,其實只有一個圈,《王牌特工2:黃金圈》。
  • 圈圈圓圓圈圈圓圓圈圈圓圓
    圈圈圓圓圈圈圓圓圈圈圓圓 2020-06-21 19:20 來源:澎湃新聞·澎湃號·政務
  • 美團圈圈是什麼?
    ,用戶可以通過在文內掃碼或者點擊小程序的方式進行跳轉。 加入美團圈圈你能獲得什麼收益! 美團圈圈利用強大的平臺資源,幫您做完其他事,讓您的產出更高效! 每天堅持三個3,實現睡後收入好簡單!
  • 戰疫有愛 | 你每天畫一個圈圈, 畫25個圈圈,媽媽就回來啦
    爸爸李柏威:「你每天畫一個圈圈,畫25個圈圈,媽媽就回來啦。今天已經畫了三個圈圈了。」媽媽年智慧去執行國際航班後,兒子木子每天都在盼著媽媽回來,時不時就問媽媽在哪,什麼時候回家。4月13日下午,主任乘務長年智慧臨時接到籤派電話,帶班執行國際航班任務。
  • R語言製作相關圖
    R語言製作相關圖這篇文章是一個英文教程的搬運和整理,前幾天在論文中看到了非常漂亮的相關圖(correlogram),可以通過這個畫出來。相關圖可以非常好的表現數據表中的各個變量之間的相關關係。在這裡使用了R語言中的corrplot包。安裝corrplot包要想在R語言中繪製相關圖,需要先安裝R包。在這裡使用的是「corrplot」包,具體的R語言安裝介紹請看前面的推文R語言安裝部署基礎。
  • ► 周五[維修的小故事]倒角技術中的C角與R角
    r角,倒角面有弧度,可以簡單理解為圓弧倒角,手工參與度更高。從圖上看,c這款手動機芯r角做的不錯。 urin1010:傳張圖(轉帖),更加直觀,前者就是倒角C,C就是CUT,也就是斜切倒角,後者就是倒角R,圓弧倒角,R即弧度的半徑。
  • 圈圈魚網紅無骨烤魚飯:小份烤魚為什麼這麼受追捧呢?
    本網11月30日訊 都說大份烤魚是一群人的狂歡,而圈圈魚小份烤魚是一個人的陪伴。對於許多吃魚一族來說,圈圈魚小份烤魚堪稱人間美味,無骨無刺,九大口味,而且非常適合平時的一日三餐。圈圈魚小份烤魚最受歡迎的莫過於是菜品多樣,一份小烤魚內暗藏乾坤,消費者可以按照自己的喜好隨意添加菜品。
  • 【R語言】遙感影像Theil Sen趨勢分析MK檢驗
    01按以下形式將影像預處理好,起名字可以根據自己的需要,但是你要是不了解R語言,就按我的格式改名字吧
  • 「畫個圈圈詛咒你」的文化起源
    在老夫畫了無數無數個圈圈都不圓之後,老夫實在無聊,於是,就開始在雞蛋裡面畫小雞,然後被宇宙最高藝術修煉學院幼兒園大班一腳踹出門,說我的這種行為,叫「變態」。於是,這個世界上,研究出了關於「變態」的科學定義,於是,他們更科學合理的解釋了今天這世界的各種噁心人的行為藝術,讓變態,成為了常態。
  • 都是小可愛!《孤獨地躲在牆角畫圈圈》追加聲優
    《孤獨地躲在牆角畫圈圈》是由《三顆星彩色冒險》的漫畫家カツヲ負責繪製的漫畫作品,本作在2018年3月25日宣布了電視動畫化的消息,並預定於2019年4月播出。今天(1月27日),本作追加了兩位新的聲優:市之瀨加那、小原好美,並公開了她們的設定圖。
  • R語言繪圖—R語言製作二維碼
    收錄於話題 #R語言繪圖54個內容