繪制堆疊柱形圖(ggplot 2)使用群落微生物物種豐度表數據

群落微生物物種豐度表-繪制堆疊柱形圖(ggplot 2)

今天我們先來講一下如何利用細菌群落的高通量測序數據繪制堆疊柱形圖展示不同樣品中優勢菌的相對多度

話不多說,直接上數據。

1 加載數據及預處理

1.1查看數據

現在先解釋一下,這組數據一個6個樣本(sample_1 到sample_6),每個樣本有3個重復,一共有18個樣本進行高通量測序,高通量測序樣本名稱為(A1-A18)。主要有兩個表,一個名稱為genus的屬水平的豐度表;一個名稱為group的樣本分組信息表

作為例子數據是屬水平的物種豐度表,如圖1-1所示:

圖1.1-1 屬水平的物種豐度表

group的樣本分組信息表,如圖·1-2所示:

這里注意一下,由于前期準備原因把樣本名稱輸成了sample-1,導致后面計算出錯,所以這里修改樣本名稱為(sample_1到sample_6),特此糾正。

圖1.1-2 group分組信息表
圖1.1-3 測序樣本名與樣本名稱的對應關系

1.2加載數據及數據預處理

#設置工作路徑
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列,為了計算后面分組的平均值
圖1.2-1
圖1.2-2
#按行求指定列平均值,并且把算好的平均值添加data1數據框
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)

#提取出已經算好的平均值到data2數據集
data2 <- data1[,19:24] 

#取出豐富度排名前10的物種,并且計算相對豐度
#由于之間已經按照每行的和進行過升序排列,所以可以直接去前10行
data3<- data2[1:10,]/apply(data2,2,sum)

data4 <- 1-apply(data3, 2, sum) #計算剩下物種的總豐度
#合并數據
data3 <- rbind(data3,data4)

圖1.2-3
圖1.2-4
圖1.2-5
圖1.2-6
圖1.2-7

使用R語言將data3 數據集導出

write.table (data3, file ="data3.csv",sep =",", quote =FALSE) #將數據導出
圖1.2-8

在Excel中修改data3 數據集,并且另存為genus1文本文件

圖1.2-9

加載新數據集genus1

#導入修改好的數據
data3 <- read.table("genus1.txt",header=T,sep="\t",row.names=1)
#查看數據
row.names(data3)
colnames(data3)
apply(data3, 2, sum)
圖1.2-10

2. 使用ggplot2 進行繪制堆疊柱形圖

2.1 加載group分組信息及數據集的組合

#加載包
library(reshape2)
library(ggplot2)

#把data3 數據整理成 ggplot2 作圖格式
#將菌名添加到data3里面,為了后面的數據轉化
data3$Taxonomy <- factor(rownames(data3), levels = rev(rownames(data3)))
#寬數據轉化為長數據
data4 <- melt(data3, id = 'Taxonomy')
圖2.1-1
圖2.1-2
#加載group分組信息表
group <- read.delim('group.txt', sep = '\t', stringsAsFactors = FALSE)

names(data4)[2] <- 'sample'  #修改列名
data5 <- merge(data4, group, by = 'sample')
圖2.1-3
圖2.1-4

2.2 使用ggplot2繪圖

p<- ggplot(data5, aes(x=sample, y=100 * value, fill = Taxonomy)) +
  #數據輸入:樣本、物種、豐度
  geom_col(position = 'stack', width = 0.6) + # stack:堆疊圖
  scale_y_continuous(expand=c(0, 0))+# 調整y軸屬性,使柱子與X軸坐標接觸
  scale_fill_manual(values =  rev(c('#FF0000', 
                                    '#FF88C2', '#FF00FF', '#9999FF', '#33FFFF',
                                    '#33FF33', '#D1BBFF', '#770077', '#EE7700', 
                                    '#CCEEFF', '#0000AA'))) + #手動修改顏色
  labs(x = 'Samples', y = '相對分度\n Relative Abundance(%)') + #設置X軸和Y軸的信息
  theme(panel.grid = element_blank(), panel.background = element_rect(color = 'black', fill = 'transparent'), strip.text = element_text(size = 12)) + #設置主題背景,根據自己的需求定制
  theme(axis.text = element_text(size = 12), axis.title = element_text(size = 13), legend.title = element_blank(), legend.text = element_text(size = 11))

p
圖2.2-1

將繪制好的堆疊柱狀圖,保存為pdf和png格式

ggsave(filename = "genus.pdf",
       p,
       width=10,
       heigh=8)
ggsave('genus.png', p, width = 10, height = 8)


#補充
  theme(axis.text.x=element_text(angle=45, hjust=1))
# angle:調整橫軸標簽傾斜角度
# hjust:上下移動橫軸標簽

今天的內容就是這些,主要是數據處理和ggplot2 繪制堆疊柱狀圖,有什么不懂的可以私聊我。

今天的的數據和源代碼我已經上傳到我的gitee倉庫,可以在微信公眾號后臺回復“數據”獲取倉庫鏈接

如有不足或錯誤之處,請批評指正。
有什么不明白的也歡迎留言討論。

歡迎關注同名wxgzh

往期內容:

《數量生態學:R語言的應用》第三章-R模式

《數量生態學:R語言的應用》第二版第三章-關聯測度與矩陣------Q模式

《數量生態學:R語言的應用》第二版筆記2

《數量生態學——R語言的應用》第二版閱讀筆記--緒論和第二章(一部分)

R語言 pheatmap 包繪制熱圖(基礎部分)

R語言pheatmap包繪制熱圖進階教程

使用PicGo和gitee搭建圖床

組間分析—T檢驗、R語言繪圖

Rmarkdown的xaringan包來制作PPT

htlm文件部署到個人網站

感謝你的閱讀!!!你的點贊關注轉發是對我最大的鼓勵。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,197評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,415評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,104評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,884評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,647評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,130評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,208評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,366評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,887評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,737評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,939評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,478評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,174評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,586評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,827評論 1 283
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,608評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,914評論 2 372

推薦閱讀更多精彩內容