有時樣本比較多,而我們想在圖形中添加標籤的時候,容易出現標籤遮蓋的問題。
尤其是在擴增子研究中,在相同基因型、環境條件宿主(溫室植物、飼養動物)至少也需要6次以上生物學重複,如人類這種無法控制基因型和生活環境的研究對象,實驗組至少30個起才容易發現有統計為意義的差異菌。
而在樣品比較、樣品篩選時又必須看清這些點名字,用於篩選掉一些記錄錯誤、未報抗生素使用或隱性疾病等異常樣品。ggplot2的輔助包ggrepel就是專門處理遮蓋問題的專家。有了人類可讀的可視化結果,在我們下遊分析、樣品篩選、異常樣品鑑定更加方便高效。
ggrepel(https://github.com/slowkow/ggrepel)是發表在github上的開源包,使用之前是要先安裝:
安裝Rstudio中安裝穩定版本:
install.packages("ggrepel")# 如果在R中,需要選擇源或指定源install.packages("ggrepel", repo="http://cran.us.r-project.org")
或者安裝最新的開發版本:
install.packages("devtools", repo="http://cran.us.r-project.org")library(devtools)devtools::install_github("slowkow/ggrepel")
geom_text()添加樣品標籤我們先看看geom_text()添加標籤時的效果
library(ggplot2)#使用系統數據集mtcars演示ggplot(mtcars)+ geom_point(aes(wt, mpg), color="red")+ geom_text(aes(wt, mpg, label=rownames(mtcars)))+ theme_classic(base_size = 16)
可以看到可視化效果不是很好。接下來看看包ggrepel的效果。
geom_text_repel()解決樣品標籤重疊geom_text_repel()是基於geom_text()
library(ggrepel)set.seed(123)ggplot(mtcars)+ geom_point(aes(wt, mpg), color="red")+ geom_text_repel(aes(wt, mpg, label=rownames(mtcars)))+ theme_classic(base_size = 16)
geom_label_repel()防標籤重疊並添加背景色geom_label_repel()是基於geom_label(),它將標籤置於一個小方框中
ggplot(mtcars)+ geom_point(aes(wt, mpg), color="grey", size=5)+ geom_label_repel(aes(wt, mpg, fill=factor(cyl), label=rownames(mtcars)))+ theme_classic(base_size = 16)
點太小顏色不容易區分組,直接給標籤上色是不是很容易區分樣品和組,以及觀察組內和組間的差異、篩選異常樣品呢?
基於擴增子分析PCoA實戰數據測試數據和代碼詳見下文:
我們在此基礎上添加標籤、錯開標籤,以及按標籤著色篩選樣品。
geom_text添加樣品名# 繪製主坐標準軸的第1,2軸p = ggplot(points, aes(x=x, y=y, color=genotype)) + geom_point(alpha=.7, size=2) + labs(x=paste("PCoA 1 (", format(100 * eig[1] / sum(eig), digits=4), "%)", sep=""), y=paste("PCoA 2 (", format(100 * eig[2] / sum(eig), digits=4), "%)", sep=""), title="bray_curtis PCoA")p + geom_text(aes(x, y, label=rownames(points)))+ theme_classic()
夠亂吧,根本看不清。
geom_text_repel合理位置添加樣品名library(ggrepel)p + geom_text_repel(aes(x, y, label=rownames(points)))+ theme_classic()
好多了吧!
geom_label_repel合理位置添加標籤需要調整文字和點不上色,只按標籤背景填充色,代碼如下:
ggplot(points, aes(x=x, y=y)) +geom_point(alpha=.7, size=2) + geom_label_repel(aes(x, y, fill=factor(genotype), label=rownames(points)))+ theme_classic()
另一種上色方式,按標籤背景分組上色,好像選擇樣品看容易,比點著色看的清楚。
現在可以一眼看到異常樣品的位置了。如果還無法確定,可以結合PCA和hculst的聚類結果綜合排除異常樣品。想在此圖中對分組進一步添加置信區間,方便顯示組間是否有差異,以及定義圈外異常樣品,將在過幾天與大家分享。
Reference官方包下載和教程 https://github.com/slowkow/ggrepel
孫老溼畫圖系列第十一彈丨標籤遮蓋處理工具ggrepel http://baijiahao.baidu.com/s?id=1576516080050548076&wfr=spider&for=pc
R語言可視化學習筆記之ggrepel包 https://mp.weixin.qq.com/s/ZKxzKZ4NBTcsJ6vFimxoGA?scene=25#wechat_redirect
猜你喜歡寫在後面宏基因組公眾號經過半年發展,原創文章過百,關注人數12000+。為鼓勵讀者交流、快速解決科研困難,我們建立了「宏基因組」專業討論群,目前己有國內外100+ PI,900+ 一線科研人員加入。參與討論,獲得專業解答,歡迎分享此文至朋友圈,並掃碼加主編好友帶你入群,務必備註「姓名-單位-研究方向-職稱/年級」。技術問題尋求幫助,首先閱讀《如何優雅的提問》學習解決問題思路,仍末解決群內討論,問題不私聊,幫助同行。
學習16S擴增子、宏基因組科研思路和分析實戰,關注「宏基因組」