先前提到堆疊柱形圖展示群落物種豐度以及細(xì)胞比例變化等等肛循。與此相較臊恋,堆疊面積圖是另一種可視化選擇褥实,特別是在大樣本情形(此時(shí)柱狀圖不便展示很多的樣本或分組數(shù)量)或者涉及“時(shí)間序列”的情形中接箫。如下面的例子博投。所以在上次面積圖的基礎(chǔ)上伪煤,我們學(xué)習(xí)堆疊面積圖的畫法加袋。
我們還是用一組微生物峰度數(shù)據(jù)作為測試數(shù)據(jù)。這組測試數(shù)據(jù)包含40多個(gè)微生物門類的峰度數(shù)據(jù)抱既。
library(reshape2)
library(ggplot2)
phylum <- read.table("phylum_table.txt", row.names = 1, sep = "\t",header=T)
因?yàn)轱@示40多個(gè)不顯示职烧,所以我們挑選top 10的highlight,其余的作為others。
下面我們就按峰度加和排序蚀之。
phylum$sum <- rowSums(phylum)
phylum <- phylum[order(phylum$sum, decreasing = TRUE),]
phylum_top10 <- phylum[1:10, -ncol(phylum)]? //選取前10行蝗敢,除去最后一列的所有列
phylum_top10['Others', ] <- 1 - colSums(phylum_top10)? //添加一行Others,值為1-列的總和足删。
下面我們load進(jìn)去每個(gè)sample的時(shí)間點(diǎn)特征寿谴。為啥用時(shí)間點(diǎn),不用sample壹堰。是因?yàn)樵趃gplot2中拭卿,由于堆疊面積圖類似于折線圖的延伸樣式,因此橫坐標(biāo)必須為數(shù)值類型才能被識(shí)別贱纠,不可為因子或字符類型峻厚,不然不會(huì)出圖。所以如果我們橫軸設(shè)置為sample的話谆焊,是一個(gè)字符型惠桃,是不會(huì)出圖的。
group <- read.table("group.txt", sep = "\t", header=T)
然后把時(shí)間點(diǎn)特征通過merge函數(shù)和我們的峰度矩陣合并辖试。
merge(x,?y,?by?=?intersect(names(x),?names(y)),by.x?=?by,?by.y?=?by,?all?=?FALSE,?all.x?=?all,?all.y?=?all,sort=?TRUE,?suffixes?=?c(".x",".y"),incomparables?=?NULL,?...)
merge函數(shù)參數(shù)的說明如下:
x,y:用于合并的兩個(gè)數(shù)據(jù)框
by,by.x,by.y:指定依據(jù)哪些行合并數(shù)據(jù)框,默認(rèn)值為相同列名的列.
all,all.x,all.y:指定x和y的行是否應(yīng)該全在輸出文件.
sort:by指定的列是否要排序.
suffixes:指定除by外相同列名的后綴.
incomparables:指定by中哪些單元不進(jìn)行合并.
phylum_top10 <- merge(phylum_top10, group, by = 'sample', all.x = TRUE)
下面辜王,我們就可以畫堆積面積圖了。
ggplot(phylum_top10, aes(x = times, y = 100*value, fill = Taxonomy)) +
geom_area() +
labs(x = 'Times', y = 'Relative Abundance(%)', title = '', fill = 'Top10 Phylum')
我們再來調(diào)整一下色系和布局等等罐孝。
ggplot(phylum_top10, aes(x = times, y = 100*value, fill = Taxonomy)) +
geom_area() +
labs(x = 'Times', y = 'Relative Abundance(%)', title = '', fill = 'Top10 Phylum')+
scale_fill_manual(values = c('gray', 'skyblue', 'burlywood1', 'purple', 'cyan', 'hotpink', 'red', 'yellow', 'green', 'orange', 'blue')) + #設(shè)置顏色
theme(panel.grid = element_blank(),? ? #去除網(wǎng)格線
? ? ? ? ? ? panel.background = element_rect(color = 'black', fill = 'transparent')) + #調(diào)整背景
scale_x_continuous(breaks = 1:15, labels = as.character(1:15), expand = c(0, 0)) + #調(diào)整坐標(biāo)軸軸刻度
scale_y_continuous(expand = c(0, 0))? #去除上下的留白
但是我們又測試了一個(gè)參數(shù)group呐馆。
ggplot(phylum_top10,aes(x = sample,y =100*value,group=Taxonomy,fill = Taxonomy))+
#stat_summary(geom = 'line',fun='mean',cex=1,col='white')+
geom_area(data =phylum_top10,aes(fill=Taxonomy))+
labs(x = 'Times', y = 'Relative Abundance(%)', title = '', fill = 'Top10 Phylum')+
scale_fill_manual(values = c('gray', 'skyblue', 'burlywood1', 'purple', 'cyan', 'hotpink', 'red', 'yellow', 'green', 'orange', 'blue')) + #設(shè)置顏色
theme(panel.grid = element_blank(), panel.background = element_rect(color = 'black', fill = 'transparent')) + #調(diào)整背景
scale_y_continuous(expand = c(0, 0))
這次就可以用sample正常顯示了。我還沒搞清楚具體的原因和邏輯莲兢,囧汹来。