绘制堆叠柱形图(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阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容