KEGG注释:KEGG富集可视化柱状图

很久很久以前,看到过文章中的KEGG富集可视化结果图。是对KEGG通路进行注释的。后来在一些测序公司的宣传页上也见到过类似的图:

image.png
image.png

其实这个图就是多了一个KEGG通路注释,近期也有小伙伴寻求怎么做。网上很多在线工具可以完成这个图,只需要按照相应的示例提供数据就可以一键出图,很方便。用到的数据就是分析完成的KEGG富集通路,关键的两列一个是KEGG同类名称,一列是counts,当然这个counts也可以选择展示怕值。例如这里的这个网站:https://www.bioinformatics.com.cn/plot_basic_pathway_enrichment_categorical_bar_plot_124

出图的效果如下:

image.png

当然我们还是希望自己动手做出来,毕竟也不是什么难事。需要的文件一个是我们分析的富集通路文件,另外一个就是KEGG注释分类,这个文件在KEGG官网可以整理,这里我们已上传分享到QQ群文件了,可自行下载!

首先加载包和数据,做一个普通的柱状图很简单:

# setwd('D:/KS项目/公众号文章/KEGG通路注释')
library(dplyr)
library(ggplot2)
library(forcats)
library(dittoSeq)
kegg <- read.csv('KEGG.csv', header = T)
#其实做一个柱状图没有什么难度
ggplot(kegg,aes(Description, Gene.Count))+
  geom_bar(stat = "identity")+
  geom_text(aes(label=Gene.Count, y=Gene.Count+2),size=3)+
  coord_flip()+
  labs(x='',y='Gene count')+
  theme_bw()+
  theme(panel.grid = element_blank(),
        legend.position = 'none',
        axis.ticks.y = element_blank(),
        axis.text = element_text(colour = 'black', size = 10))
image.png

然后读入注释文件,将通路注释,这里使用的笨办法,直接筛选:

#注释文件
kegg_ann <- read.csv('kegg_annotation.csv')
rownames(kegg_ann) <- kegg_ann$directory3
df <- kegg_ann[kegg$Description,]
kegg1 <- cbind(kegg, df)
table(kegg1$directory1)


# Cellular Processes Environmental Information Processing 
# 1                                    3 
# Human Diseases                           Metabolism 
# 3                                    3 
# Organismal Systems 
# 2 
kegg1 <- kegg1[order(kegg1$directory1),]
kegg1$Description <- as.factor(kegg1$Description)
kegg1$Description <- fct_reorder(kegg1$Description)

p <- ggplot(kegg1,aes(Gene.Count,Description))+
  geom_bar(stat = "identity", aes(fill=directory1))+
  geom_text(aes(label=Gene.Count, x=Gene.Count+2),size=3)+
  labs(y='',x='Gene count')+
  theme_classic()+
  theme(panel.grid = element_blank(),
        legend.position = 'none',
        axis.ticks.y = element_blank(),
        axis.text = element_text(colour = 'black', size = 10),
        plot.margin = margin(0,0,0,-0.05, "cm"))+
  scale_fill_manual(values = dittoColors())

最后添加上右侧的注释就完成了:


#构建注释
df1<-data.frame(x="A", y=kegg1$Description, group=kegg1$directory1)

df1$group <- factor(df1$group, levels = c("Organismal Systems",
                                          "Metabolism",
                                          "Human Diseases",
                                          "Environmental Information Processing",
                                          "Cellular Processes"))

p1 <- ggplot(df1,aes(x,y, fill=group))+
  geom_tile(show.legend = F)+
  facet_grid(group~.,scales = 'free',space = 'free')+
  labs(x=NULL,y=NULL)+
  scale_x_discrete(expand = c(0,0))+
  scale_y_discrete(expand = c(0,0))+
  theme(panel.background = element_blank(),
        axis.ticks = element_blank(),
        axis.text = element_blank(),
        plot.margin = margin(0,-0.05,0,0, "cm"),
        strip.text.y = element_text(angle=0,size=10,color = "black",
                                    hjust = 0,margin = margin(b = 3,t=3)),
        strip.background = element_rect(colour=NULL,fill = 'white'),
        panel.spacing=unit(0, "mm"))+
  scale_fill_manual(values = c("#0072B2","#F0E442","#009E73","#56B4E9","#E69F00"))
  
 
#拼图
library(deeptime)
ggarrange2(p, p1,nrow = 1,widths =c(2,0.05))
image.png

当然了,网上也有别的形式的注释,这里不再演示,大概样子就是在柱状图y轴添加了分类的名称,有了注释文件就可以构造了。具体的做法可以参考我们之前的帖子:柱状图|GO、KEGG|标签与柱状图颜色对应

那么最后还有一个问题,很多人肯定会想到,就是GO的结果可以注释嘛?我们知道GO分为BP、MF、CC三个,但是在BP中能不能继续注释,我是没有看到官方的文件,但是需要自己注释和作图可以参考我们这个帖子。希望分享对你有帮助,点个赞、分享下再走呗!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容