用ggplot2做富集分析气泡图
数据准备
富集分析软件
由于做的材料不是模式植物,用clusterProfiler上面配置起来有点困难,最要命的是基因组数据库并没有上传NCBI,无法用OrgDb,当然也可以自己做background然后做富集,折腾了好久还是有各种问题...打算等以后有空了再好好折腾吧,毕竟脚尖还没踏进R的大门。
最后选择用CJ大神的TBtools做富集分析,这次以go富集分析为例,需要自己准备的有基因ID对应GOID的一个Background,go-basis.obo直接在软件中下载。根据教程一步一步做完就得到了。(大神更新软件速度较快,建议加TBtools群,实时更新)
TBtools富集分析输出结果一会需要的数据就是图中箭头指出的这几行,建议把最后corrected p-value(BH-method)改成qvalue,为了在R里面稍微少打点字,嘿嘿。
此外,这次富集出来180多条go注释,太多了,画出的图太长,所以首先筛选了qvalue<0.05的,还是有100多条,然后选了各个class(BP MF CC)的top15,此外在这里建议对EnrichmentScore
这一列A-Z排序,然后再对Class
排序,(这里主要是为了在展示的时候纵向上把同一个class的GO term防在一起,横向上按照enrichmentScore从小到大排列,此外,在其他的bubble chart中有人用GeneRatio作为横坐标,那么用HitsGenesCountsInSelectedSet
除以AllGenesCountsInSelectedSet
表头写上GeneRatio
;此外如果出现qvalue为0的term,建议把0改成1E-100,不然最后这些0值被-log后会出现na,na则会显示为灰色,为了避免R下面复杂的操作这里最好改成无限接近于0的数字。(这应该不算改数据吧?)准备好后另存为格式为制表符分隔符的文本(.txt)
用ggplot2画bubble chart
- 设置工作路径:打开Rstudio→Session→Set Working Directory→Choose Directory,然后选择你刚才保存文件的文件夹,也可以直接
setwd("~/Dropbox/xxx")
- 画图
##加载ggplot2包
library(ggplot2)
##读取刚才保存的富集分析结果文件
goinput <- read.table("test.txt",header = T,sep = "\t")##header = T 第一行是表头,sep = "\t"表示以制表符(tab)分割
##利用levels来设置factor中的顺序,保证最后出图时按照我们之前排好的顺序排列
x=goinput$EnrichmentScore
y=factor(goinput$GO_Name,levels = goinput$GO_Name)
##先出一个框架
p = ggplot(goinput,aes(x,y))
##数据特征包括bubble大小来源为匹配到这个term上的基因数,颜色为qvalue,颜色变化为从低到高:"SpringGreen"到"DeepPink"而类型则是class,
p1 = p + geom_point(aes(size=HitsGenesCountsInSelectedSet,color=-1*log(Qvalue),shape=Class,))+
scale_color_gradient(low = "SpringGreen", high = "DeepPink")
##设置横纵坐标名字,标题,legend名字
p2 = p1 + labs(color=expression(-log[10](Qvalue)),
size="Gene Number",
x="EnrichmentScore",
y="Go_term",
title="Go enrichment of test Genes")
##搞个主题,把边框画出来也可以通过ggplot Theme assistant修改
p3 = p2 +theme_bw()
p3
P1主要信息录入.jpeg
p2各标题名称改好.jpeg
P3最后修改主题.jpeg