生信画图,可视化

GSEA图,你为什么不给我换行

2020-05-30  本文已影响0人  小洁忘了怎么分身

感谢大家昨天一起召唤了豆豆,但是很不幸,召唤失败了。唉,睡得和考拉一样。我今天又开始了新一轮的线上课程,已经在家讲第四场了。💪听说,澳门很快就会放开通关限制,豆豆就可以回学校了吧 ~他只上了10天班就放年假了,到现在也没回去...

gsea富集分析的图,做出来是这样的:

会发现,右边的名称很难看,我想到两个办法:一个是把共同的前缀HALLMARK_去掉。一个是换行。第一个还是很好实现的:

rm(list = ls())
load("step4output.Rdata")
options(stringsAsFactors = F)
library(GSEABase) 
library(clusterProfiler)
library(DOSE)
library(org.Hs.eg.db)
library(ggplot2)
library(stringr)
# 准备输入数据,差异基因和gmt文件
data(geneList)
geneList = deg$logFC
names(geneList) = deg$ENTREZID
geneList = sort(geneList,decreasing = T)
geneset <- read.gmt("h.all.v7.1.entrez.gmt")  

方法1:去前缀

在数据中去除可以:

geneset$ont = str_remove(geneset$ont,"HALLMARK_")
# gsea
egmt <- GSEA(geneList, TERM2GENE=geneset,verbose=F)
egmt2<- setReadable(egmt,OrgDb=org.Hs.eg.db, keyType = "ENTREZID")

dotplot(egmt2,split=".sign")+facet_grid(~.sign)

或者在画图时去除也行:

dotplot(egmt2,split=".sign")+facet_grid(~.sign)+
 scale_y_discrete(labels=function(x) str_remove(x,"HALLMARK_"))

方法2:换行

这是y叔写过的方法~理论上应该是可以的:

geneset <- read.gmt("h.all.v7.1.entrez.gmt")  

egmt <- GSEA(geneList, TERM2GENE=geneset,verbose=F)
egmt2<- setReadable(egmt,OrgDb=org.Hs.eg.db, keyType = "ENTREZID")

dotplot(egmt2,split=".sign")+facet_grid(~.sign)
dotplot(egmt2,split=".sign")+facet_grid(~.sign)+
scale_y_discrete(labels=function(x) str_wrap(x, width=30))

dotplot(egmt2,split=".sign")+facet_grid(~.sign)+
scale_y_discrete(labels=function(x) str_wrap(x, width=30))

实际上纹丝不动!出来的图和原来一样



str_wrap就是换行函数嘛,看起来也没什么不同,但是不论怎样替换数字都换不了,我和豆豆就开始研究,为什么kegg和go的通路能实现换行,换成这个就不行?
排查了很多刻意点,比如GSEAresult和GOresult数据结构的差别?大小写的差别?
最后的最后,发现了问题,str_wrap换行是要考虑空格的,作者设计时考虑的是单词句子换行,不会切断一个单词啊!
而gmt文件里的基因集名字,都是下划线_连接的,被当做一个单词来处理,所以你怎么写他都不会换行!!!怎么办呢?把下划线替换为空格即可!

dotplot(egmt2,split=".sign")+facet_grid(~.sign)+
 scale_y_discrete(labels=function(x) str_wrap(str_replace_all(x,"_"," "), width=30))

虽然换的有点丑,但毕竟是换了,找到原因了(鸣谢豆豆)~当时做换行时心情是很差的,想不出来,为什么就不行。。。这时热心豆豆探过头来跟我一起探讨,最终找到了原因。

上一篇 下一篇

猜你喜欢

热点阅读