首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ggplot2画KEGG富集柱形图

ggplot2画KEGG富集柱形图

作者头像
生信交流平台
发布2020-08-05 16:26:15
发布2020-08-05 16:26:15
6.3K00
代码可运行
举报
运行总次数:0
代码可运行

在做项目分析的时候遇到过一个问题,就是有个老师想将好几张功能富集结果中的柱状图的横坐标的范围全部调整为一样的,一般画这个柱状图都是用Y叔的clusterprofiler包中的barplot函数对使用这个包的功能富集结果进行一键绘图,超级简单方便。但是当我去查找这个函数的调整坐标的参数时:

代码语言:javascript
代码运行次数:0
运行
复制
barplot.enrichResult {enrichplot}  R Documentation
barplot
Description
barplot of enrichResult

Usage
## S3 method for class 'enrichResult'
barplot(
  height,
  x = "Count",
  color = "p.adjust",
  showCategory = 8,
  font.size = 12,
  title = "",
  ...
)

也就是说这个函数里面没有调整坐标范围的参数,不知道是不是因为我没找到还是什么,反正我找了好久没有找到,我有点方(如果知道的小伙伴可以下面留言告诉我)。

后面我觉得还是自己用ggplot2画吧,反正这个包里面一键绘图也是根据ggplot2来的。

这个图与一般的函数barplot画出来的不一样的地方在于它的颜色,这张图里面的颜色反应的是fdr的大小,是一个连续值,ggplot2可以将连续值映射到到颜色上,横坐标是通路中感兴趣基因的个数。

下面用一套KEGG富集分析的结果来展示绘图的过程,下表展示的KEGG富集分析结果也是利用Y叔的clusterprofiler包得到的。

代码语言:javascript
代码运行次数:0
运行
复制
#加载ggplot2包
library(ggplot2)
#一键清除
rm(list=ls())
#读取功能富集结
kegg <- read.csv("KEGG-enrich.csv",stringsAsFactors=F)
#对富集结果按照p.adjust进行从小到大排序,保证最显著的通路在前
kegg <- kegg[order(kegg$p.adjust),]

#这里画图只展示top10的通路
kegg <- kegg[1:10,]

#提取每条通路里面差异表达的基因数
top10 <- data.frame(kegg$Description,kegg$Count ,kegg$p.adjust)
colnames(top10) <- c("Description","count","padj")

#fill=padj fill颜色填充,使用连续值padj
p <- ggplot(data=top10,aes(x=Description,y=count,fill=padj))

#coord_flip()颠倒坐标轴
p1 <- p + geom_bar(stat="identity") + coord_flip()
p2 <- p1 + theme(panel.background=element_rect(fill='transparent',color='gray'),
                 axis.text.y=element_text(color="black",size=12))


#ylim(0,30) 更改横坐标的范围这里坐标轴颠倒了,虽然看起来是x轴,但其实是y轴
p3 <- p2 + ylim(0,30) + scale_fill_gradient(low="red",high="blue")

p4 <- p3 + scale_x_discrete(limits=rev(top10[,1])) +labs(x="",y="",title="KEGG")

#输出为png格式的图片
png("KEGG_bar_plot.png",width=680,height=480)
print(p4)
dev.off()

#输出为pdf的文件
pdf("KEGG_bar_plot.pdf",width=9)
print(p4)
dev.off()

最后结果图:

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

本文分享自 生信交流平台 微信公众号,前往查看

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

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

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