还是NC的文章,这次我们探讨下Figure2a,这个富集气泡图可能平平无奇,但是仔细看发现它的横坐标是4个分组。这就值得去学习了,同时复现这个气泡图是为了任何气泡图达到举一反三的效果。
首先自己构建一个数据,包含GO terms、分组和P值,读入文件。
setwd("F:/生物信息学")
A <- read.csv("GO.csv",header=T)
为了好分组,将GO term设置为因子,顺序不变,然后画图!
library(forcats)
A$Description <- as.factor(A$Description)
A$Description <- fct_inorder(A$Description)
ggplot(A, aes(Group, Description)) +
geom_point(aes(color=Padj, size=GeneRatio))+theme_bw()+
theme(panel.grid = element_blank(),
axis.text.x=element_text(angle=90,hjust = 1,vjust=0.5))+
scale_color_gradient(low='#6699CC',high='#CC3333')+
labs(x=NULL,y=NULL)+guides(size=guide_legend(order=1))
这个图看起来差在y轴的文字在左边,用scale_y_discrete函数将其放在右边,之后把legend也放在上面。
ggplot(A, aes(Group, Description)) +
geom_point(aes(color=Padj, size=GeneRatio))+theme_bw()+
theme(panel.grid = element_blank(),
axis.text.x=element_text(angle=90,hjust = 1,vjust=0.5))+
scale_color_gradient(low='#6699CC',high='#CC3333')+
labs(x=NULL,y=NULL)+guides(size=guide_legend(order=1))+
theme(legend.direction = "horizontal", legend.position = "top")+#legend水平置于顶部
scale_y_discrete(position = "right")#y轴文字放右侧
接下来就是添加分组了,方法与我们之前ggplot画热图一样《热图5:ggplot2画热图及个性化修饰》,同样的方法,最后将其通过aplot包与气泡图组合在一起。
cluster <- A$Description %>% as.data.frame() %>%
mutate(group=rep(c("cluster1","cluster2","cluster3"),
times=c(13,12,13))) %>%
mutate(p="")%>%
ggplot(aes(p,.,fill=group))+
geom_tile() +
scale_y_discrete(position="right") +
theme_minimal()+xlab(NULL) + ylab(NULL) +
theme(axis.text.y = element_blank(),
axis.text.x =element_text(
angle =90,hjust =0.5,vjust = 0.5))+
labs(fill = "Pathway")
一般做富集的气泡图用gene ratio表示气泡大小,颜色表示P。这篇文章中用logP表示气泡大小,fold表示颜色。我们可以在原来的数据基础上构建logP然后作图,效果一样!
A$fold <- ''
A$fold <- -log(A$GeneRatio)
p1 <-ggplot(A, aes(Group, Description)) +
geom_point(aes(color=fold, size=LOGP))+theme_bw()+
theme(axis.text.x=element_text(angle=90,hjust = 1,vjust=0.5))+
scale_color_gradient(low='#6699CC',high='#CC3333')+
labs(x=NULL,y=NULL)+guides(size=guide_legend(order=3))+
scale_y_discrete(position = "right")
p1%>%
insert_left(cluster, width = .05)
ggplot真的很强大,具有参数可调整性的优势。这个复现我们不仅仅是为做出这么一张图,更重要的是要去仔细感受ggplot画气泡图及其调整的细节,钻研明白这些内容,我想很多问题就会迎刃而解,自己动手解决问题的能力也会有所提高!
祝学习愉快!