使用ggplot2繪制菌群組成堆疊圖

堆疊圖主要看不同菌群在該樣本中的相對(duì)比例,把每個(gè)樣本的情況或者每個(gè)處理組的情況展示出來,可以大致看出樣本的重復(fù)性好壞和不同處理間的某些菌群變化趨勢线衫。

1.門水平的堆疊圖
###設(shè)置工作目錄
getwd()
path1 = ("C:/Users/Administrator/Desktop/R_work/03_irradiation_gutMicro/00_visualization")
setwd(path1)
list.files()
############門水平組成堆疊圖#####################################
####讀取門水平數(shù)據(jù)
phylum <- read.delim('phylum_table.txt', row.names = 1, sep = '\t', stringsAsFactors = FALSE, check.names = FALSE)

#將門水平進(jìn)行排序
phylum$sum <- rowSums(phylum)
phylum <- phylum[order(phylum$sum, decreasing = TRUE), ]
phylum
#選取相對(duì)豐度
phylum_top10 <- phylum[1:3, -ncol(phylum)]
phylum_top10['Others', ] <- 100 - colSums(phylum_top10)
phylum_top10

####ggplot2堆疊圖
library(reshape2)   
library(ggplot2)    

#調(diào)整數(shù)據(jù)布局
phylum_top10$Taxonomy <- factor(rownames(phylum_top10), levels = rev(rownames(phylum_top10)))
phylum_top10 <- melt(phylum_top10, id = 'Taxonomy')

#添加分組信息
group <- read.delim('group.txt', sep = '\t', stringsAsFactors = FALSE)
names(group)[1] <- 'variable'
phylum_top10 <- merge(phylum_top10, group, by = 'variable')

#因子排序,對(duì)樣品排序,對(duì)分組排序
phylum_top10$variable <- factor(phylum_top10$variable, 
                                levels = c("UN1_1", "UN1_2",    "UN1_3",    "UN1_4",    
                                           "UN1_5", "UN1_6",    "IR1_1",    "IR1_2",
                                           "IR1_3", "IR1_4",    "IR1_5",  "IR1_6",
                                           "UN7_1", "UN7_2",    "UN7_3",    "UN7_4",    
                                           "UN7_5", "UN7_6",    "IR7_1",    "IR7_2",
                                           "IR7_3", "IR7_4",    "IR7_5",    "IR7_6",
                                           "UN14_1",    "UN14_2",   "UN14_3",   "UN14_4",
                                           "UN14_5",    "UN14_6",   "IR14_1",   "IR14_2",
                                           "IR14_3",    "IR14_4",   "IR14_5",   "IR14_6"), ordered = TRUE)
phylum_top10$group <- factor(phylum_top10$group,
                                levels = c("Unirradiated","Irradiated"),ordered = TRUE)
phylum_top10

#作圖
#顏色不夠用肴敛,設(shè)置更多梯度變化的顏色
#colourCount = length(unique(phylum_top10$Taxonomy))
#getPalette = colorRampPalette(brewer.pal(9, "Set1"))
p <- ggplot(phylum_top10, aes(variable,  value, fill = Taxonomy)) +
  geom_col(position = "stack", width = 0.8) +
  facet_wrap(~group, scales = 'free_x', ncol = 2) +
  scale_fill_manual(values =  rev(c( "#E64B35B2", "#4DBBD5B2",
                                    "#3C5488B2","yellow"))) +
  labs(x = '', y = 'Relative Abundance(%)', fill = "Phylum") +
  theme(panel.grid = element_blank(),
        panel.background = element_rect(color = '#636363', 
                                        fill = 'transparent'),
        strip.text = element_text(size = 20),
        strip.text.x = element_text(size = 20, colour = "black", 
                                    face = "bold"),
        strip.background = element_rect(color="grey95", 
                                        fill="grey95",
                                        size=1.5, 
                                        linetype="solid"),
        legend.title = element_text(size = 15,face = "bold",
                                    vjust = 1, hjust = 0), 
        legend.text = element_text(size = 12),
        legend.key.size=unit(.5,'cm'),
        axis.title.x = element_text(size = 16, vjust = 0.5, 
                                    hjust = 0.5),
        axis.title.y = element_text(size = 15, vjust = 0.5, 
                                    hjust = 0.5),
        axis.text.x = element_text(angle = 90, size = 10,
                                   vjust = 0.5, hjust = 0.5),
        axis.text.y = element_text(size = 15,vjust = 0.5, 
                                   hjust = 0.5),
        legend.position = "bottom") + 
  guides(fill=guide_legend(nrow=1,reverse=TRUE)) 
 
p 

2.科水平的堆疊圖

和門水平的代碼基本一樣,這樣重復(fù)的代碼越來越多达舒,經(jīng)常是在滿眼的代碼中尋找參數(shù)去修改調(diào)整值朋,眼要瞎,逼迫我使用function()和一些循環(huán)函數(shù)如for巩搏,lapply等昨登,這次還是重復(fù)代碼跑一遍,下次一定要簡化工作贯底!

############科水平組成堆疊圖#####################################
####讀取科水平數(shù)據(jù)

family <- read.delim('family_table.txt', row.names = 1, sep = '\t', stringsAsFactors = FALSE, check.names = FALSE)

#將門水平進(jìn)行排序
family$sum <- rowSums(family)
family <- family[order(family$sum, decreasing = TRUE), ]
family
#選取相對(duì)豐度
family_top20 <- family[1:21, -ncol(family)] 
family_top20
#排序后數(shù)據(jù)導(dǎo)出成csv文件
write.csv(family_top20, 'family_top20.csv', quote = FALSE)


####ggplot2堆疊圖
library(reshape2)   
library(ggplot2)    

#調(diào)整數(shù)據(jù)布局
family_top20$Taxonomy <- factor(rownames(family_top20), 
                                levels = rev(rownames(family_top20)))
family_top20 <- melt(family_top20, id = 'Taxonomy')

#添加分組信息
group <- read.delim('group.txt', sep = '\t', stringsAsFactors = FALSE)
names(group)[1] <- 'variable'
family_top20 <- merge(family_top20, group, by = 'variable')

#因子排序丰辣,對(duì)樣品排序撒强,對(duì)分組排序
family_top20$variable <- factor(family_top20$variable, 
                                levels = c("UN1_1", "UN1_2",    "UN1_3",    "UN1_4",    
                                           "UN1_5", "UN1_6",    "IR1_1",    "IR1_2",
                                           "IR1_3", "IR1_4",    "IR1_5",  "IR1_6",
                                           "UN7_1", "UN7_2",    "UN7_3",    "UN7_4",    
                                           "UN7_5", "UN7_6",    "IR7_1",    "IR7_2",
                                           "IR7_3", "IR7_4",    "IR7_5",    "IR7_6",
                                           "UN14_1",    "UN14_2",   "UN14_3",   "UN14_4",
                                           "UN14_5",    "UN14_6",   "IR14_1",   "IR14_2",
                                           "IR14_3",    "IR14_4",   "IR14_5",   "IR14_6"), ordered = TRUE)
family_top20$group <- factor(family_top20$group,
                             levels = c("Unirradiated","Irradiated"),ordered = TRUE)
family_top20

#作圖
#顏色不夠用,設(shè)置更多梯度變化的顏色
#colourCount = length(unique(family_top20$Taxonomy))
#getPalette = colorRampPalette(brewer.pal(9, "Set1"))
p1 <- ggplot(family_top20, aes(variable,  value, fill = Taxonomy)) +
  geom_col(position = 'stack', width = 0.8) +
  facet_wrap(~group, scales = 'free_x', ncol = 2) +
  scale_fill_manual(values =  rev(c( "#3C5488B2","#00A087B2", 
                                    "#F39B7FB2","#91D1C2B2", 
                                    "#8491B4B2", "#DC0000B2", 
                                    "#7E6148B2","yellow", 
                                    "darkolivegreen1", "lightskyblue", 
                                  "darkgreen", "deeppink", "khaki2", 
                                  "firebrick", "brown1", "darkorange1", 
                                  "cyan1", "royalblue4", "darksalmon", 
                                  "darkgoldenrod1", "darkseagreen", "darkorchid"))) +
  labs(x = '', y = 'Relative Abundance(%)', fill = "Family") +
  theme(panel.grid = element_blank(),
        panel.background = element_rect(color = '#636363', 
                                        fill = 'transparent'),
        strip.text = element_text(size = 20),
        strip.text.x = element_text(size = 20, colour = "black", face = "bold"),
        strip.background = element_rect(color="grey95", 
                                        fill="grey95",
                                        size=1.5, 
                                        linetype="solid"),
        legend.title = element_text(size = 15,face = "bold",
                                    vjust = 1, hjust = 0),
        legend.text = element_text(size = 11),
        legend.key.size=unit(.4,'cm'),
        axis.title.x = element_text(size = 16, vjust = 0.5, 
                                    hjust = 0.5),
        axis.title.y = element_text(size = 15, vjust = 0.5, 
                                    hjust = 0.5),
        axis.text.x = element_text(angle = 90, size = 10,
                                   vjust = 0.5, hjust = 0.5),
        axis.text.y = element_text(size = 15,vjust = 0.5, 
                                   hjust = 0.5),
        legend.position="bottom") + 
  guides(fill=guide_legend(nrow=6,reverse=TRUE))


p1

3.拼圖
#拼圖
library(patchwork)
p/p1

堆疊圖的配色比較重要笙什,顏色不好看起來很亂很躁飘哨,谷歌出來的一套配色覺得還行。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末琐凭,一起剝皮案震驚了整個(gè)濱河市芽隆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌统屈,老刑警劉巖胚吁,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異愁憔,居然都是意外死亡腕扶,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門吨掌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來半抱,“玉大人,你說我怎么就攤上這事膜宋×蓿” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵激蹲,是天一觀的道長棉磨。 經(jīng)常有香客問我,道長学辱,這世上最難降的妖魔是什么乘瓤? 我笑而不...
    開封第一講書人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮策泣,結(jié)果婚禮上衙傀,老公的妹妹穿的比我還像新娘。我一直安慰自己萨咕,他們只是感情好统抬,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著危队,像睡著了一般聪建。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上茫陆,一...
    開封第一講書人閱讀 52,184評(píng)論 1 308
  • 那天金麸,我揣著相機(jī)與錄音,去河邊找鬼簿盅。 笑死挥下,一個(gè)胖子當(dāng)著我的面吹牛揍魂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播棚瘟,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼现斋,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了偎蘸?” 一聲冷哼從身側(cè)響起庄蹋,我...
    開封第一講書人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎禀苦,沒想到半個(gè)月后蔓肯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡振乏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秉扑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慧邮。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖舟陆,靈堂內(nèi)的尸體忽然破棺而出误澳,到底是詐尸還是另有隱情,我是刑警寧澤秦躯,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布忆谓,位于F島的核電站,受9級(jí)特大地震影響踱承,放射性物質(zhì)發(fā)生泄漏倡缠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一茎活、第九天 我趴在偏房一處隱蔽的房頂上張望昙沦。 院中可真熱鬧,春花似錦载荔、人聲如沸盾饮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丘损。三九已至,卻和暖如春工扎,著一層夾襖步出監(jiān)牢的瞬間徘钥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來泰國打工定庵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吏饿,地道東北人踪危。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像猪落,于是被迫代替她去往敵國和親贞远。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359