前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ggplot2|绘制GO富集柱形图

ggplot2|绘制GO富集柱形图

作者头像
生信补给站
发布2020-08-05 17:38:49
11.3K1
发布2020-08-05 17:38:49
举报
文章被收录于专栏:生信补给站生信补给站

生信分析中经常会得到一些基因,然后做GO富集分析,达到对基因进行注释和分类的目的。

本文利用R语言的ggplot2包,从头带您绘制可发表级别的GO富集分析结果图。

一 载入数据集和R包

利用各种生信工具得到富集分析结果,数据列可能不一致,但关键几列都有。

代码语言:javascript
复制
library(ggplot2)
data <- read.csv("GO_enrichment_significant.csv",header=TRUE)
head(data)

二 对上述GO结果绘制基础bar图

参照之前ggplot2使用方法,更改geom即可绘制简单的bar图,按照GO_category分组颜色

代码语言:javascript
复制
ggplot(data=data, aes(x=GO_term,y=Num_of_symbols_in_list_in_GO, fill=GO_category)) + geom_bar(stat="identity", width=0.8)

可看出和文献中的差距较大,体现在以下几个方面:

A:标题,坐标轴“业余”;

B:GO_category顺序未按照输入文件,相同GO_category没在一起;

C:横坐标label太长,重叠在一起。

三 “细节”调整GO结果bar图

3.1 坐标轴调整策略

代码语言:javascript
复制
#将GO_term设定为factor即可按照顺序输出
GO_term_order=factor(as.integer(rownames(data)),labels=data$GO_term)
ggplot(data=data, aes(x=GO_term_order,y=Num_of_symbols_in_list_in_GO, fill=GO_category)) + geom_bar(stat="identity", width=0.8) + coord_flip() +  xlab("GO term") + ylab("Num of Genes") + theme_bw()

好像有一点能看了,尝试其他策略。

3.2 调整横坐标label策略

将label调整成一定角度倾斜

代码语言:javascript
复制
COLS <- c("#66C3A5", "#8DA1CB", "#FD8D62")
ggplot(data=data, aes(x=GO_term_order,y=Num_of_symbols_in_list_in_GO, fill=GO_category)) +
  geom_bar(stat="identity", width=0.8)  + 
  scale_fill_manual(values = COLS) + theme_bw()  +
  xlab("GO term") + ylab("Num of Genes") + labs(title = "The Most Enriched GO Terms")+ theme(axis.text.x=element_text(face = "bold", color="gray50",angle = 70,vjust = 1, hjust = 1 )) 

嗯 ,标签太长溢出,采取保留GO-term的前三个单词(可以其他策略)后面...代替,可以excel或者R function 解决。

3.3 调整label长度后绘图

代码语言:javascript
复制
GO_term_order=factor(as.integer(rownames(data)),labels=labels)
COLS <- c("#66C3A5", "#8DA1CB", "#FD8D62")
ggplot(data=data, aes(x=GO_term_order,y=Num_of_symbols_in_list_in_GO, fill=GO_category)) +
  geom_bar(stat="identity", width=0.8)  + 
  scale_fill_manual(values = COLS) + theme_bw() +
  xlab("GO term") + ylab("Num of Genes") + labs(title = "The Most Enriched GO Terms")+ theme(axis.text.x=element_text(face = "bold", color="gray50",angle = 70,vjust = 1, hjust = 1 )) 

好了 ,这样好像比较顺眼了,不管什么软件工具得到的GO富集结果,都可以绘图,然后,,,发文章去吧。。。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信补给站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档