【R畫圖學(xué)習(xí)14.2】堆疊面積圖

先前提到堆疊柱形圖展示群落物種豐度以及細(xì)胞比例變化等等。與此相較,堆疊面積圖是另一種可視化選擇,特別是在大樣本情形(此時(shí)柱狀圖不便展示很多的樣本或分組數(shù)量)或者涉及“時(shí)間序列”的情形中。如下面的例子。所以在上次面積圖的基礎(chǔ)上,我們學(xué)習(xí)堆疊面積圖的畫法。

我們還是用一組微生物峰度數(shù)據(jù)作為測(cè)試數(shù)據(jù)。這組測(cè)試數(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')



我們?cè)賮碚{(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))? #去除上下的留白



但是我們又測(cè)試了一個(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正常顯示了。我還沒搞清楚具體的原因和邏輯,囧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容