群落微生物物種豐度表-繪制堆疊柱形圖(ggplot 2)
今天我們先來(lái)講一下如何利用細(xì)菌群落的高通量測(cè)序數(shù)據(jù)來(lái)繪制堆疊柱形圖來(lái)展示不同樣品中優(yōu)勢(shì)菌的相對(duì)多度。
話不多說(shuō)酿箭,直接上數(shù)據(jù)。
1 加載數(shù)據(jù)及預(yù)處理
1.1查看數(shù)據(jù)
現(xiàn)在先解釋一下饲握,這組數(shù)據(jù)一個(gè)6個(gè)樣本(sample_1 到sample_6)膀跌,每個(gè)樣本有3個(gè)重復(fù),一共有18個(gè)樣本進(jìn)行高通量測(cè)序邪乍,高通量測(cè)序樣本名稱為(A1-A18)。主要有兩個(gè)表对竣,一個(gè)名稱為genus的屬水平的豐度表庇楞;一個(gè)名稱為group的樣本分組信息表。
作為例子數(shù)據(jù)是屬水平的物種豐度表否纬,如圖1-1所示:
group的樣本分組信息表吕晌,如圖·1-2所示:
這里注意一下,由于前期準(zhǔn)備原因把樣本名稱輸成了sample-1临燃,導(dǎo)致后面計(jì)算出錯(cuò)睛驳,所以這里修改樣本名稱為(sample_1到sample_6),特此糾正。
1.2加載數(shù)據(jù)及數(shù)據(jù)預(yù)處理
#設(shè)置工作路徑
setwd("C:/Users/shanpengloveforever/Desktop/圖/微信")
#加載genus 物種豐度表
data<-read.table("genus.txt",header=T,sep="\t",row.names=1)
data$sum <- rowSums(data) #求每一行的和
# 按每行的和降序排列
data1 <- data[order(data$sum, decreasing=TRUE), ]
#data2 <- data1[order(data1$sum, decreasing=FALSE), ] 按每行的和升序排列
data1 <- data1[,-19] #刪除sum列膜廊,為了計(jì)算后面分組的平均值
#按行求指定列平均值乏沸,并且把算好的平均值添加data1數(shù)據(jù)框
data1$sample_1 <- apply(data1[,1:3], 1, mean)
data1$sample_2 <- apply(data1[,4:6], 1, mean)
data1$sample_3 <- apply(data1[,7:9], 1, mean)
data1$sample_4 <- apply(data1[,10:12], 1, mean)
data1$sample_5<- apply(data1[,13:15], 1, mean)
data1$sample_6 <- apply(data1[,16:18], 1, mean)
#提取出已經(jīng)算好的平均值到data2數(shù)據(jù)集
data2 <- data1[,19:24]
#取出豐富度排名前10的物種,并且計(jì)算相對(duì)豐度
#由于之間已經(jīng)按照每行的和進(jìn)行過(guò)升序排列爪瓜,所以可以直接去前10行
data3<- data2[1:10,]/apply(data2,2,sum)
data4 <- 1-apply(data3, 2, sum) #計(jì)算剩下物種的總豐度
#合并數(shù)據(jù)
data3 <- rbind(data3,data4)
使用R語(yǔ)言將data3 數(shù)據(jù)集導(dǎo)出
write.table (data3, file ="data3.csv",sep =",", quote =FALSE) #將數(shù)據(jù)導(dǎo)出
在Excel中修改data3 數(shù)據(jù)集耳璧,并且另存為genus1文本文件
加載新數(shù)據(jù)集genus1
#導(dǎo)入修改好的數(shù)據(jù)
data3 <- read.table("genus1.txt",header=T,sep="\t",row.names=1)
#查看數(shù)據(jù)
row.names(data3)
colnames(data3)
apply(data3, 2, sum)
2. 使用ggplot2 進(jìn)行繪制堆疊柱形圖
2.1 加載group分組信息及數(shù)據(jù)集的組合
#加載包
library(reshape2)
library(ggplot2)
#把data3 數(shù)據(jù)整理成 ggplot2 作圖格式
#將菌名添加到data3里面溢吻,為了后面的數(shù)據(jù)轉(zhuǎn)化
data3$Taxonomy <- factor(rownames(data3), levels = rev(rownames(data3)))
#寬數(shù)據(jù)轉(zhuǎn)化為長(zhǎng)數(shù)據(jù)
data4 <- melt(data3, id = 'Taxonomy')
#加載group分組信息表
group <- read.delim('group.txt', sep = '\t', stringsAsFactors = FALSE)
names(data4)[2] <- 'sample' #修改列名
data5 <- merge(data4, group, by = 'sample')
2.2 使用ggplot2繪圖
p<- ggplot(data5, aes(x=sample, y=100 * value, fill = Taxonomy)) +
#數(shù)據(jù)輸入:樣本纳鼎、物種傀顾、豐度
geom_col(position = 'stack', width = 0.6) + # stack:堆疊圖
scale_y_continuous(expand=c(0, 0))+# 調(diào)整y軸屬性,使柱子與X軸坐標(biāo)接觸
scale_fill_manual(values = rev(c('#FF0000',
'#FF88C2', '#FF00FF', '#9999FF', '#33FFFF',
'#33FF33', '#D1BBFF', '#770077', '#EE7700',
'#CCEEFF', '#0000AA'))) + #手動(dòng)修改顏色
labs(x = 'Samples', y = '相對(duì)分度\n Relative Abundance(%)') + #設(shè)置X軸和Y軸的信息
theme(panel.grid = element_blank(), panel.background = element_rect(color = 'black', fill = 'transparent'), strip.text = element_text(size = 12)) + #設(shè)置主題背景薄货,根據(jù)自己的需求定制
theme(axis.text = element_text(size = 12), axis.title = element_text(size = 13), legend.title = element_blank(), legend.text = element_text(size = 11))
p
將繪制好的堆疊柱狀圖翁都,保存為pdf和png格式
ggsave(filename = "genus.pdf",
p,
width=10,
heigh=8)
ggsave('genus.png', p, width = 10, height = 8)
#補(bǔ)充
theme(axis.text.x=element_text(angle=45, hjust=1))
# angle:調(diào)整橫軸標(biāo)簽傾斜角度
# hjust:上下移動(dòng)橫軸標(biāo)簽
今天的內(nèi)容就是這些,主要是數(shù)據(jù)處理和ggplot2 繪制堆疊柱狀圖菲驴,有什么不懂的可以私聊我荐吵。
今天的的數(shù)據(jù)和源代碼我已經(jīng)上傳到我的gitee倉(cāng)庫(kù),可以在微信公眾號(hào)后臺(tái)回復(fù)“數(shù)據(jù)”獲取倉(cāng)庫(kù)鏈接
如有不足或錯(cuò)誤之處,請(qǐng)批評(píng)指正先煎。
有什么不明白的也歡迎留言討論贼涩。
歡迎關(guān)注同名wxgzh
往期內(nèi)容:
《數(shù)量生態(tài)學(xué):R語(yǔ)言的應(yīng)用》第三章-R模式
《數(shù)量生態(tài)學(xué):R語(yǔ)言的應(yīng)用》第二版第三章-關(guān)聯(lián)測(cè)度與矩陣------Q模式
《數(shù)量生態(tài)學(xué):R語(yǔ)言的應(yīng)用》第二版筆記2
《數(shù)量生態(tài)學(xué)——R語(yǔ)言的應(yīng)用》第二版閱讀筆記--緒論和第二章(一部分)
R語(yǔ)言 pheatmap 包繪制熱圖(基礎(chǔ)部分)
Rmarkdown的xaringan包來(lái)制作PPT
感謝你的閱讀J硇R>搿!你的點(diǎn)贊關(guān)注轉(zhuǎn)發(fā)是對(duì)我最大的鼓勵(lì)占锯。