ggplot2|绘制GO富集柱形图

作者: 生信补给站 | 来源:发表于2019-07-24 22:33 被阅读10次

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

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

    一 载入数据集和R包

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

    library(ggplot2)

    data<- read.csv("GO_enrichment_significant.csv",header=TRUE)

    head(data)

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

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

    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 坐标轴调整策略

    #将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调整成一定角度倾斜

    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("GOterm") +ylab("NumofGenes") +

    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长度后绘图

    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("GOterm") +ylab("NumofGenes") +

    labs(title="The Most Enriched GO Terms")+

    theme(axis.text.x=element_text(face="bold",color="gray50",angle=70,vjust=1,hjust=1))

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

    更多关于生信 ,R ,Python的内容请扫码关注小号,谢谢。

    相关文章

      网友评论

        本文标题:ggplot2|绘制GO富集柱形图

        本文链接:https://www.haomeiwen.com/subject/zorqrctx.html