16s分析一直在連載,但是最基礎的莫過于alpha多樣性了,,但是箱線圖卻不是alpha多樣性的唯一選擇,箱線圖也不是局限于alpha多樣性,,這里借助alpha多樣性,,將箱線圖做一個完整繪制 #這里安裝的這個包就是做顯著性分析的 #install.packages("ggpubr")安裝包 library("ggplot2") library("ggpubr") setwd("E:/Shared_Folder/HG_usearch_HG") # 讀入實驗設計和Alpha多樣性值 design =read.table("map_lxdjhg.txt", header=T, row.names= 1,sep="\t") alpha =read.table("alpha8825.txt", header=T, row.names= 1,sep="\t") head(design) head(alpha) #合并數(shù)據(jù)框,按照列,,all=F,表示只取兩者共有列名的數(shù)據(jù) index =merge(alpha, design,by="row.names",all=F) head(index) 方便大家學習,,這里給出index數(shù)據(jù)窗口: #添加作圖變量,使用geom_boxplot()不修改任何參數(shù),,出圖,,似乎也挺好看的! ggplot(index,aes(x=SampleType, y=chao1, color=SampleType))+ geom_boxplot() 但是我們還不夠滿意,!繼續(xù): #我們讓所有樣本點都顯示出來 ggplot(index,aes(x=SampleType, y=chao1, color=SampleType))+ geom_boxplot()+geom_jitter() 似乎很凌亂,,這里咱們有辦法: 可以通過設置“jitter”參數(shù)來調整數(shù)據(jù)的分布:geom_jitter(position=position_jitter(0.5)) position_jitter用來調整數(shù)據(jù)的凌亂程度,數(shù)值越大越凌亂,。 #我們數(shù)據(jù)量比較少,,設置緊密一點既可以達到美觀的 ggplot(index,aes(x=SampleType, y=chao1, color=SampleType))+ geom_boxplot()+geom_jitter(position=position_jitter(0.15)) 這張圖出來我們發(fā)現(xiàn)異常了,我明明只有九個點,,為什么有的組會多幾個點呢,,原來是箱線圖將原來異常值的點算了兩次,這里我們?nèi)サ粼瓉懋惓V档狞c:alpha=0為什么選用這個命令呢,,因為這里咱們還要使用,,點的顏色和箱線圖相沖,這個命令可以調節(jié)透明度,弱化點的存在: #我們的點不需要這么亮,,于是設置透明度為alpha:0.4 ggplot(index,aes(x=SampleType, y=chao1, color=SampleType))+ geom_boxplot(alpha=0)+geom_jitter(position=position_jitter(0.17),alpha=0.4) 問題又來了,,箱線圖箱子很細,不好看: #加上我們自己設定的標簽 ggplot(index,aes(x=SampleType, y=chao1, color=SampleType))+ geom_boxplot(alpha=0,size=0.8, width=0.5)+ geom_jitter(position=position_jitter(0.15),alpha=0.6,size=1.2)+ labs(x="Groups", y="chao1index") size=0.8:調整箱子厚度 width=0.5:調整箱子寬度 size=1.2:調整點的大小 調整一下外觀: p<-ggplot(index,aes(x=SampleType, y=chao1, color=SampleType))+ geom_boxplot(alpha=0,size=0.8, width=0.5)+ geom_jitter(position=position_jitter(0.15),alpha=0.6,size=1.2)+ labs(x="Groups", y="chao1index") p+theme_classic() 有些小伙伴可能有分面的需求,這里我選了一部分觀測,,來做分面,,一個分面只有一個箱子,當然要有多個箱子,,就把多個箱子分為一組就好了,, #取三組觀測 index1<-index[index$SampleType%in%c("GF1","GC1","G0"),]#多個字符串就要用這個%in%c head(index1) p<-ggplot(index1,aes(x=SampleType, y=chao1, color=SampleType))+ geom_boxplot(alpha=0,size=0.8, width=0.5)+ geom_jitter(position=position_jitter(0.15),alpha=0.6,size=1.2)+ labs(x="Groups", y="chao1index") #分面命令facet_grid p+ facet_grid(.~SampleType) 到這里,箱線圖就說的差不多了,,但是作為科研用圖,,統(tǒng)計自然少不了,然我們來為自己的箱子做統(tǒng)計分析吧: 這里推薦包ggpubr,,這里用參數(shù)檢驗和非參數(shù)檢驗方法 圖片來自R語言可視化學習筆記之添加p-value和顯著性標記,,Easycharts公眾號 head(index) #默認為"wilcox.test"這是兩組的非參數(shù)檢驗,微生物生態(tài)方面我們常用非參數(shù)檢驗,,但是這里我們是多個組的,,因此,更改為Kruskal-Wallis檢驗 compare_means(shannon~SampleType,data=index, paired = TRUE,method = "kruskal.test") 結果如下,,多組間是顯著的: #在這里我們就兩兩檢驗,,看看那些組顯著: df_summarise<-compare_means(shannon~SampleType,data=index, paired = TRUE) # compare_means的計算是以tbl格式返回的,我們可以轉成dataframe df_summarise<-as.data.frame(df_summarise) setwd("L:/#R語言學習/測試數(shù)據(jù)") write.table(df_summarise,"alpha—wilcox.test.txt",quote= FALSE,row.names = T, col.names = T,sep = "\t") 輸出表格,,使用excel查看:(這里沒有必要輸出第一列,,可以設置row.names = F) 但是ggpubr包提供了更加方便的方式將這些顯著性結果展示在圖上 #多組檢驗,設置合適的坐標 p+theme_classic()+stat_compare_means(method= "kruskal.test",label.x = 1.5, label.y = 2900) #不只是多組檢驗,,我們選擇關注的兩組檢驗 my_comparisons<- list(c("GC1", "GF1"), c("GC5","GF5")) #這里我們由于選擇了要兩組比較的組,,所以為了出圖美觀,將橫坐標進行了一個排序,,做顯著性將不顯著的組hide.ns = T隱藏,,由于在做多組比較是出錯,無法和排序命令一起使用,,所以這里我人工添加多組比較結果 p+theme_classic()+scale_x_discrete(limits=c("G0","GC1","GF1","GC5","GF5","GN1","GN5"))+ stat_compare_means(comparisons=my_comparisons,label ="p.signif",hide.ns = T)+ annotate("text",x=1.7,y=2200,parse=TRUE,size=4,label="'kruskal.test:'*5.3e-09",family="serif",fontface="italic",colour="darkred") 到這里就快完成了,,我們加上保存命令,再次重新出圖: # res = 300分辨率,units="mm"高度和寬度的單位#發(fā)文章中要求的格式和一些其他參數(shù)設置如上 tiff(file="alpha_chao1.tif",res = 300, compression = "none", width=180,height=140,units="mm") p<-ggplot(index,aes(x=SampleType, y=chao1, color=SampleType))+ geom_boxplot(alpha=0,size=0.8, width=0.5)+ geom_jitter(position=position_jitter(0.15),alpha=0.6,size=1.2)+ labs(x="Groups", y="chao1index") p+theme_classic()+scale_x_discrete(limits=c("G0","GC1","GF1","GC5","GF5","GN1","GN5"))+ stat_compare_means(comparisons=my_comparisons,label= "p.signif",hide.ns = T)+ annotate("text",x=1.7,y=2200,parse=TRUE,size=4,label="'kruskal.test:'*5.3e-09",family="serif",fontface="italic",colour="darkred") dev.off()#這條命令必須加上才可以得到保存的圖片 學習永無止境,,分享永不停歇! |
|