【R语言】——基因GO/KEGG功能富集结果可视化(保姆级教程)

这篇具有很好参考价值的文章主要介绍了【R语言】——基因GO/KEGG功能富集结果可视化(保姆级教程)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上期“原来基因功能富集分析这么简单”介绍如何使用DAVID在线分析工具对基因进行GO/KEGG功能富集分析。本期则介绍使用R语言ggplot包对DAVID在线分析工具所获得的基因GO/KEGG功能富集结果进行可视化。

1 数据准备

数据输入格式(xlsx格式):

kegg可视化 r代码,R语言,功能富集分析,r语言,开发语言

注:DAVID导出来的“%”这列为“Gene ratio”;上面只展示“BP”的数据,其余“CC”和“MF”也是类似格式,故不一一列举。

2 R包加载、数据导入及处理

#下载包#

install.packages("dplyr")

install.packages("ggplot2")

install.packages("tidyverse")

install.packages("openxlsx")

#加载包#

library (dplyr)

library (ggplot2)  

library(tidyverse)

library(openxlsx)

#数值导入#

BP = read.xlsx('C:/Rdata/jc/enrich-gene.xlsx',sheet= "go_result_BP",sep=',')

CC = read.xlsx('C:/Rdata/jc/enrich-gene.xlsx',sheet= "go_result_CC",sep=',')

MF = read.xlsx('C:/Rdata/jc/enrich-gene.xlsx',sheet= "go_result_MF",sep=',')

head(BP)
###数据导入数据处理###

#ego = rbind(go_result_BP,go_result_CC,go_result_MF) #将三个组进行合并,需要合并可选择

#ego = ego[,1:3] #提取前几列进行操作,有需要可选择

#print(ego) #预览数据
#DVIAD获得的数据term列是GO:0005251~delayed rectifier potassium channel activity形式的,故需要将其拆分。可在Excel中进行分列也可以应用一下函数进行分列。

BP = separate(BP,Term, sep="~",into=c("ID","Description"))

CC = separate(CC,Term, sep="~",into=c("ID","Description"))

MF = separate(MF,Term, sep="~",into=c("ID","Description"))

kegg可视化 r代码,R语言,功能富集分析,r语言,开发语言

#提取各组数据需要展示的数量#

display_number = c(15, 10, 5)  ##这三个数字分别代表选取的BP、CC、MF的数量

go_result_BP = as.data.frame(BP)[1:display_number[1], ]

go_result_CC = as.data.frame(CC)[1:display_number[2], ]

go_result_MF = as.data.frame(MF)[1:display_number[3], ]



#将提取的各组数据进行整合

go_enrich = data.frame(

  ID=c(go_result_BP$ID, go_result_CC$ID, go_result_MF$ID),  #指定ego_result_BP、ego_result_CC、ego_result_MFID为ID                        

  Description=c(go_result_BP$Description,go_result_CC$Description,go_result_MF$Description),

  GeneNumber=c(go_result_BP$Count, go_result_CC$Count, go_result_MF$Count), #指定ego_result_BP、ego_result_CC、ego_result_MF的Count为GeneNumber

  type=factor(c(rep("Biological Process", display_number[1]), #设置biological process、cellular component、molecular function 的展示顺序

                rep("Cellular Component", display_number[2]),

                rep("Molecular Function", display_number[3])),

              levels=c("Biological Process", "Cellular Component","Molecular Function" )))



##设置GO term名字长短,过长则设置相应长度

for(i in 1:nrow(go_enrich)){

  description_splite=strsplit(go_enrich$Description[i],split = " ")

  description_collapse=paste(description_splite[[1]][1:5],collapse = " ")  #选择前五个单词GO term名字

  go_enrich$Description[i]=description_collapse

  go_enrich$Description=gsub(pattern = "NA","",go_enrich$Description)  #gsub()可以用于字段的删减、增补、替换和切割,可以处理一个字段也可以处理由字段组成的向量。gsub(“目标字符”, “替换字符”, 对象)

}



#转成因子,防止重新排列

#go_enrich$type_order=factor(rev(as.integer(rownames(go_enrich))),labels=rev(go_enrich$Description))

go_enrich$type_order = factor(go_enrich$Description,levels=go_enrich$Description,ordered = T)

head(go_enrich)

kegg可视化 r代码,R语言,功能富集分析,r语言,开发语言 

3  GO富集结果可视化

#纵向柱状图#

ggplot(go_enrich,

       aes(x=type_order,y=Count, fill=type)) + #x、y轴定义;根据type填充颜色

       geom_bar(stat="identity", width=0.8) +  #柱状图宽度

       scale_fill_manual(values = c("#6666FF", "#33CC33", "#FF6666") ) +  #柱状图填充颜色

       coord_flip() +  #让柱状图变为纵向

       xlab("GO term") +  #x轴标签

       ylab("Gene_Number") +  #y轴标签

       labs(title = "GO Terms Enrich")+  #设置标题

       theme_bw()

#help(theme) #查阅这个函数其他具体格式

kegg可视化 r代码,R语言,功能富集分析,r语言,开发语言

图1 纵向柱状图

#横向柱状图#

ggplot(go_enrich,

       aes(x=type_order,y=Count, fill=type)) +  #x、y轴定义;根据type填充颜色

       geom_bar(stat="identity", width=0.8) +  #柱状图宽度

       scale_fill_manual(values = c("#6666FF", "#33CC33", "#FF6666") ) + #柱状图填充颜色

       xlab("GO term") + #x轴标签

       ylab("Gene_Number") +  #y轴标签

       labs(title = "GO Terms Enrich")+ #设置标题

  theme_bw() +

       theme(axis.text.x=element_text(family="sans",face = "bold", color="gray50",angle = 70,vjust = 1, hjust = 1 )) #对字体样式、颜色、还有横坐标角度()

kegg可视化 r代码,R语言,功能富集分析,r语言,开发语言

图2 横向柱状图

#分组柱状图绘制#

ggplot(go_result_BP,aes(x = Gene_Ratio,y = Description,fill=PValue))  +  #fill=PValue,根据PValue填充颜色;color=PValue根据PValue改变线的颜色

       geom_bar(stat="identity",width=0.8 ) + ylim(rev(go_result_BP$Description)) + #柱状图宽度与y轴显示顺序

       theme_test() + #调整背景色

       scale_fill_gradient(low="red",high ="blue") +  #调节填充的颜色

       labs(size="Genecounts",x="GeneRatio",y="GO term",title="GO_BP") + #设置图内标签(x、y轴、标题)

      theme(axis.text=element_text(size=10,color="black"),

        axis.title = element_text(size=16),title = element_text(size=13))

kegg可视化 r代码,R语言,功能富集分析,r语言,开发语言kegg可视化 r代码,R语言,功能富集分析,r语言,开发语言kegg可视化 r代码,R语言,功能富集分析,r语言,开发语言

图3分组柱状图绘制

#气泡图#

ego = rbind(go_result_BP,go_result_CC,go_result_MF)  

ego = as.data.frame(ego)

rownames(ego) = 1:nrow(ego)

ego$order=factor(rev(as.integer(rownames(ego))),labels = rev(ego$Description))

head(ego)

ggplot(ego,aes(y=order,x=Gene_Ratio))+

  geom_point(aes(size=Count,color=PValue))+

  scale_color_gradient(low = "red",high ="blue")+

  labs(color=expression(PValue,size="Count"),

         x="Gene Ratio",y="GO term",title="GO Enrichment")+

  theme_bw()

kegg可视化 r代码,R语言,功能富集分析,r语言,开发语言 

图4 气泡图

#分组气泡图绘制#

ggplot(go_result_BP,  #根据所绘制的分组进行绘制

       aes(x=Gene_Ratio,y=Description,color= PValue)) +  #color= -1*PValue可定义成倒数

       geom_point(aes(size=Count))  +

       ylim(rev(go_result_BP$Description)) +  #rev相反的意思

      labs(size="Genecounts",x="GeneRatio",y="GO_term",title="GO_BP") +  #调标签名称

      scale_color_gradient(low="red",high ="blue") +   #改颜色

      theme(axis.text=element_text(size=10,color="black"),  

        axis.title = element_text(size=16),title = element_text(size=13))

kegg可视化 r代码,R语言,功能富集分析,r语言,开发语言kegg可视化 r代码,R语言,功能富集分析,r语言,开发语言kegg可视化 r代码,R语言,功能富集分析,r语言,开发语言

 图5 分组气泡图 

4  KEGG富集结果可视化

###KEGG可视化###

#数据导入#

kk_result= read.xlsx('C:/Rdata/jc/enrich-gene.xlsx', sheet= "KEGG", sep = ',')

#数据处理#

display_number = 30#显示数量设置

kk_result = as.data.frame(kk_result)[1:display_number[1], ]

kk = as.data.frame(kk_result)

rownames(kk) = 1:nrow(kk)

kk$order=factor(rev(as.integer(rownames(kk))),labels = rev(kk$Description))

kegg可视化 r代码,R语言,功能富集分析,r语言,开发语言

#柱状图#

ggplot(kk,aes(y=order,x=Count,fill=PValue))+

       geom_bar(stat = "identity",width=0.8)+ #柱状图宽度设置

       scale_fill_gradient(low = "red",high ="blue" )+

       labs(title = "KEGG Pathways Enrichment",  #设置标题、x轴和Y轴名称

       x = "Gene number",

       y = "Pathway")+

  theme(axis.title.x = element_text(face = "bold",size = 16),

       axis.title.y = element_text(face = "bold",size = 16),

       legend.title = element_text(face = "bold",size = 16))+

  theme_bw()

kegg可视化 r代码,R语言,功能富集分析,r语言,开发语言

图5 KEGG富集分析柱状图

#气泡图#

ggplot(kk,aes(y=order,x=Gene_Ratio))+

     geom_point(aes(size=Count,color=PValue))+

     scale_color_gradient(low = "red",high ="blue")+

     labs(color=expression(PValue,size="Count"),

       x="Gene Ratio",y="Pathways",title="KEGG Pathway Enrichment")+

  theme_bw()

kegg可视化 r代码,R语言,功能富集分析,r语言,开发语言

图6 KEGG富集分析气泡图

好了本次分享就到这里,下期将分享使用R clusterProfiler包对基因进行GO/KEGG功能富集分析,敬请期待。

 

关注“在打豆豆的小潘学长”公众号,发送“富集分析1”获得完整代码包和演示数据。文章来源地址https://www.toymoban.com/news/detail-638647.html

到了这里,关于【R语言】——基因GO/KEGG功能富集结果可视化(保姆级教程)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 渐进式学习:如何用R和GO富集可视化捕捉生命的关键信号?

    生命科学中的数据分析和可视化是一个具有挑战性的领域。随着技术和理论的不断发展,研究人员需要处理越来越复杂和庞大的数据集,以研究生物体在不同尺度上的结构和功能,探索不同生物过程和疾病的机制。在这个领域,GO(Gene Ontology)富集分析已成为一种常见的技术

    2024年02月10日
    浏览(36)
  • ☞GO和KEGG富集倍数(Fold Enrichment)如何计算 enrich factor qvalue

    前面我们简单介绍过ggplot2画KEGG富集柱形图,其实GO富集结果的展示相对于KEGG来说要复杂一点点,因为GO又进一步可以划分成三个类。 BP:biological process,生物学过程。 MF:molecular function,分子功能。 CC:cellular component, 细胞成分。 因此在画图的时候,我们需要将这三类给区分开来。

    2024年02月06日
    浏览(27)
  • 使用R语言绘制富集条形图,轻松分析基因表达数据

    富集分析(enrichment analysis)是一种生物信息学方法,它可以帮助我们识别基因或其他的生物实体在某个特定的类别中过度表示的趋势。通俗来说,富集分析通过将基因分类到特定的集合中,然后根据基因在集合中的分布和总体分布的比较,来寻找哪些集合与特定的生物过程、

    2024年02月11日
    浏览(36)
  • 【生信简单文章复现】差异分析+WGCNA+功能富集分析+PPI网络+Hub基因验证

    目录 WGCNA简介 两个假设 一般步骤  数据准备 差异分析 参数解释 Limma包差异分析  WGCNA分析 构建基因共表达网络 模块与临床特征的相关性分析 GO富集分析 KEGG富集分析 PPI分析 验证关键基因   写在最后​​​​​​​ WGCNA简介 Weighted Gene Co-Expression Network Analysis,加权基因共

    2024年01月19日
    浏览(32)
  • go语言恶意代码检测系统--对接前端可视化与算法检测部分

    恶意代码检测系统。 功能点 详细描述 注册账号 未注册用户注册成为产品用户,从而具备享有产品各项服务的资格 登录账号 用户登录产品,获得产品提供的各项服务 上传恶意样本 用户可以将上传自己的收集到的恶意样本及其样本属性,网站会对该恶意样本进行保存 获取恶

    2024年02月12日
    浏览(31)
  • Monocle2拟时基因富集分析

    ****Monocle2全部往期精彩系列 : 1、群成员专享:Monocle2更新(就是重新梳理一下) 2、一键跑完monocle2? 3、ggplot2个性可视化monocle2结果 4、ggplot修饰monocle2拟时热图:一众问题全部解决 5、Monocle2终极修改版 6、单细胞拟时分析:基因及通路随拟时表达变化趋势 Monocle2拟时分析及

    2024年02月08日
    浏览(24)
  • GO富集绘图绘制方法,零基础教程,替换数据直接作图,完成版R语言脚本

    本期分享一个快速绘制GO富集结果图的方法,主要使用R语言tidyverse包,只需导入数据即可一步出图,可以自定义显示的数目、颜色、筛选参数, 从此以后绘制GO富集图只需1秒 。 下面是一个GO富集分析的结果数据表: ID:表示具体的GO条目 Description:GO条目的描述 RatioF:分子是

    2024年02月12日
    浏览(28)
  • R语言 一种功能强大的数据分析、统计建模 可视化 免费、开源且跨平台 的编程语言

    R语言是一种广泛应用于数据分析、统计建模和可视化的编程语言。它由新西兰奥克兰大学的罗斯·伊哈卡和罗伯特·杰特曼开发,并于1993年首次发布。R语言是一个免费、开源且跨平台的语言,它在统计学和数据科学领域得到了广泛的应用。 R语言具有丰富的数据处理、统计分

    2024年02月07日
    浏览(39)
  • PCL Visualizer可视化结果保存成图片、关闭可视化窗口

    内容: C++ PCLVisualizer可视化的结果保存成图片,并自动关闭可视化窗口。

    2024年02月13日
    浏览(26)
  • GSEA富集分析结果详解

    1. GSEA富集分析原理图 2. GSEA富集分析过程 1. 计算富集分数(ES) 富集分数:S 反应基因集(比如某个通路内的基因集)成员 s 在排序基因集 L(比如根据 logFC 排序的差异基因集,默认降序,所以上调基因在顶端)的两端富集的程度。富集得分 ES 最后定义为最大的peak值。正值

    2024年02月13日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包