扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
当富集分析完成,拿到如下的分析结果后,就可以进行作图了。
成都创新互联公司秉承实现全网价值营销的理念,以专业定制企业官网,成都网站建设、成都网站制作,成都小程序开发,网页设计制作,手机网站制作设计,全网营销推广帮助传统企业实现“互联网+”转型升级专业定制企业官网,公司注重人才、技术和管理,汇聚了一批优秀的互联网技术人才,对客户都以感恩的心态奉献自己的专业和所长。
富集分析结果的可视化无非就是柱状图和气泡图,但是公司默认出图实在是太丑,所以还是自己动手修改修改。
一、常规柱状图(ggplot2)
横轴为gene counts,或者用-logP也行,填充相应的用P值或者gene counts。ggplot画图的好处就是可以进行很多调整。
二、常规气泡图(ggplot2)
气泡图与柱状图如出一辙,只是在展示方式上出现了差别。一个用geom_bar()函数,气泡图类似于散点图用geom_point()函数。
三、上下调同时展示(ggplot2)
很多时候研究者拿到差异基因后,上下调基因是分别富集的,在展示上需要同时体现二者,我们之前提到metascape可以做到: 转录组不求人系列(十二): Cell文章最喜欢用的差异基因GO、KEGG富集分析工具 ,除此之外,之前讲过的气泡图也可以展现多组的结果: 复现《nature communications》图表(四):ggplot画多组富集气泡图 。这里我们继续提供一种bar图的展示方式。将down的数值调整为负,做一列分组,就可以展示了。
当然了,以上所说的可视化还是比较常规,在基础上可以自己做调整。也有一些文章总是标新立意,有很多奇特的展现方式,我们会在之后的系列中讲解。
最广为人知的富集分析做法是把上调、下调基因分别或者合并,拿来做GO和KEGG富集分析。经常有一些数据集,拿差异基因做得不到结果,那是因为确实富集不到任何通路,是正常的。不妨试试GSEA,不是拿差异基因,而是拿全部基因作为输入。
GSEA与GO,KEGG分析区别:GO,KEGG分析更加依赖差异基因,实则是对一部分基因的分析 (忽略差异不显著的基因),而GSEA是从全体基因的表达矩阵中找出具有协同差异 (concordant differences)的基因集,故能兼顾差异较小的基因
GO,KEGG富集是定性的分析,GSEA考虑到了表达或其它度量水平的值的影响。GSEA分析不需要指定阈值(p值或FDR)来筛选差异基因,在没有经验存在的情况下分析我们感兴趣的基因集,而这个基因集不一定是显著差异表达的基因。GSEA分析可以将那些GO/KEGG富集分信息中容易遗漏掉的差异表达不显著却有着重要生物学意义的基因包含在内。
另外,对于时间序列数据或样品有定量属性时,GSEA的优势会更明显,不需要每个分组分别进行富集,直接对整体进行处理。
数据准备,制作geneList
我们现在知道Cytokine-cytokine receptor interaction setSize enrichmentScore是被抑制的,如果还想看一下这个通路里面的基因是如何变化的,应该怎么办呢,pathview 可以帮到我们。
ID转换用到的是 bitr() 函数,bitr()的使用方法:
org.Hs.eg.db包含有多种gene_name的类型
keytypes() :keytypes(x),查看注释包中可以使用的类型
columns() :类似于keytypes(),针对org.Hs.eg.db两个函数返回值一致
select() :select(x, keys, columns, keytype, ...) eg.
函数enrichGO()进行GO富集分析,enrichGO()的使用方法:
举例:
前面我给大家详细介绍过
☞GO简介及GO富集结果解读
☞四种GO富集柱形图、气泡图解读
☞GO富集分析四种风格展示结果—柱形图,气泡图
☞KEGG富集分析—柱形图,气泡图,通路图
☞ DAVID GO和KEGG富集分析及结果可视化
也用视频给大家介绍过
☞ GO和KEGG富集分析视频讲解
最近有粉丝反映说,利用clusterProfiler这个包绘制GO富集分析气泡图和柱形图的时候,发现GO条目的名字都重叠在一起了。
气泡图
柱形图
这个图别说美观了,简直不忍直视。经过我的认真研究,发现跟R版本有关。前面我给大家展示的基本都是R 3.6.3做出来的图。很多粉丝可能用的都是最新版本的R 4.1.2。
我们知道R的版本在不停的更新,相应的R包也在不停的更新。我把绘制气泡图和柱形图相关的函数拿出来认真的研究了一下,终于发现的症结所在。
dotplot这个函数,多了个 label_format 参数
我们来看看这个参数究竟是干什么用的,看看参数说明
label_format :
a numeric value sets wrap length, alternatively a custom function to format axis labels. by default wraps names longer that 30 characters
原来这个参数默认值是30,当标签的长度大于30个字符就会被折叠,用多行来展示。既然问题找到了,我们就来调节一下这个参数,把他设置成100,让我们的标签可以一行展示。
是不是还是原来的配方,还是熟悉的味道
同样的柱形图,我们也能让他恢复原来的容貌。
关于如何使用R做GO和KEGG富集分析,可参考下文
GO和KEGG富集分析视频讲解
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流