查看原文
其他

一个通路居然在上下调基因集里面都富集到了

生信技能树 生信技能树 2022-08-10

有粉丝提问:用ggplot2画双向条图的时候发现有重复行结果被忽略排序标记成一个条,希望可以让它们按顺序分别显示在上调和下调通路的正常位置,如下所示:

有重复行结果被忽略排序标记成一个条

做一个测试数据

代码如下所示:

set.seed(123456)
df=data.frame(
  pathway=c(sample(LETTERS,10),
            sample(LETTERS,10)),
  pvalue= abs(rnorm(20))/100,
  group = rep(c('up','down'),each=10)
)
table(df$pathway)

这个代码技术含量非常高,大家如果提问绘图相关的,一定要学会生成测试数据哦。有了测试数据,大家就很容易去帮助你。

默认的绘图

在我们给大家的GEO数据挖掘课程里面经常出现的,感兴趣的可以去看公众号推文,系列目录在:

代码如下所示:

library(ggplot2)
library(ggsci)
dat=df
dat$group = ifelse(dat$group =='up',1,-1)
dat$pvalue = -log10(dat$pvalue)
dat$pvalue <- dat$pvalue*dat$group 
dat=dat[order(dat$pvalue,decreasing = F),]

p_kegg<- ggplot(dat, aes(x=reorder(pathway,order(pvalue, decreasing = F)),
                         y=pvalue, 
                         fill=group)) + 
  geom_bar(stat="identity",
           width=0.8) + 
  scale_fill_gradient(low="#3685af",high="#af4236",guide = FALSE) + 
  scale_x_discrete(name ="Pathway names") +
  scale_y_continuous(name ="-log10Pvalue",
                     expand = c(0,0)) +
  coord_flip() + 
  theme(axis.text=element_text(face = "bold",size = 15),
        axis.title = element_text(face = 'bold',size = 15),
        plot.title = element_text(size = 20,hjust = 0.3),
        legend.position = "top",
        panel.grid = element_line(colour = 'white'))+
  ggtitle("The most enriched KEGG"
p_kegg

确实会出现部分通路出现在上下调两个分组,就是C,M,F这3个 :

确实会出现部分通路出现在上下调两个分组

修正后的绘图

因为pathway确实有重复,所以需要修改pathway的名字,但是在图里面却仍然是看起来是没有修改的样子,代码如下所示:

library(ggplot2)
library(ggsci)
df[df$group %in"down",]$pvalue <- df[df$group %in"down",]$pvalue*-1
# 调整y轴
df[duplicated(df$pathway),"pathway"] <- paste0(df[duplicated(df$pathway),"pathway"],".1")
# 设置因子
df$pathway <- factor(df$pathway,levels = df[order(df$pvalue,decreasing = T),"pathway"])
# 更改y轴坐标
# 由于我们之前添加了.1 ,所以需要改回来
name.y <- substr(df$pathway,1,1)
names(name.y) <- df$pathway

ggplot(df,aes(x=pathway,y=pvalue, fill=factor(group)))+geom_bar(stat="identity")+coord_flip( )+
  scale_x_discrete(
    "pathway",
    labels = name.y)+
  scale_fill_d3()

这个代码来自于我们《生信技能树》的单细胞数据分析工程师 林枫,欢迎大家前来咨询我们团队的单细胞数据分析服务哦,请移步:肿瘤样品的单细胞需要提取上皮细胞继续细分教程找到我们的客服微信哈!

结果如下所示:

 

可以看到前面的C,M,F这3个 是叠加的,但是现在是分开在了上下两个差异基因分组的通路富集里面。

发起一个讨论

这样的在上下调基因集里面都富集到了的通路,大家会如何解释?另外,广大的粉丝朋友们是不是可以 推陈出新,给出来其它解决方案?

文末友情推荐

做教学我们是认真的,如果你对我们的马拉松授课(直播一个月互动教学)有疑问,可以看完我们从2000多个提问互动交流里面精选的200个问答! 2021第二期_生信入门班_微信群答疑整理,以及 2021第二期_数据挖掘班_微信群答疑笔记

与十万人一起学生信,你值得拥有下面的学习班:



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存