用ggplot来画基因富集气泡图
2019-12-18 本文已影响0人
生信编程日常
用DAVID或者clusterprofiler 做基因富集的常常需要挑选一下想展示的通路或者排一下通路的顺序,而且,clusterprofiler展示的顺序有时候跟输入的顺序不一样。因此,用ggplot可以方便对各种来源的富集结果实现气泡图。
如用clusterprofiler做富集
#GeneSymbol为输入的基因集
toENTREZID = bitr(GeneSymbol,fromType = "SYMBOL",toType = "ENTREZID",OrgDb = "org.Mm.eg.db")
goBP = enrichGO(OrgDb="org.Mm.eg.db",gene = as.vector(toENTREZID$ENTREZID),ont = "BP", pvalueCutoff = 0.05, readable= TRUE)
dotplot(goBP,showCategory=10)+scale_color_gradient(low = "#132B43", high = "#56B1F7")
head(goBP@result)
image
image
我们再用ggplot画气泡图,结果看起来和clusterprofiler画的差不多,不一样的地方在于clusterproliler的x轴默认的gene ratio,而ggplot我们用的是count,这个可以自己选择,再就是ggplot我们可以用level调节go term的顺序,如最上面两个红框里相同基因数但是pvalue不同的go term 在ggplot里面符合上面表中的顺序,而clusterprofiler是相反的
#goBP为clusterprofiler的富集结果,取前10个来画图。
goinput<-goBP@result[1:10,]
head(goinput)
#使画出go term的顺序与输入的一致
goinput$Description<-factor(goinput$Description,levels = rev(goinput$Description))
#reorder使纵轴按照go term 和count排序
goinput$Description<-factor(goinput$Description,levels = rev(goinput$Description))
ggplot(goinput,aes(x = Count, y =reorder(Description,Count)))+
geom_point(aes(size=Count,color=p.adjust))+
scale_colour_gradient(low="#132B43",high="#56B1F7")+
labs(
color=expression(p.adjust),
size=" Count Number",
x="Gene Count"
)+
theme_bw()+
theme(
axis.text.y = element_text(size = rel(1.8)),
axis.title.x = element_text(size=rel(1.8)),
axis.title.y = element_blank()
)+ scale_size(range=c(5, 10))
image