
#引用包
library("clusterProfiler")
library("org.Hs.eg.db")
library("enrichplot")
library("ggplot2")

pvalueFilter=0.05     #p值过滤条件
qvalueFilter=1     #矫正后的p值过滤条件

#定义颜色
colorSel="qvalue"
if(qvalueFilter>0.05){
	colorSel="pvalue"
}
	
setwd("F:\\血栓\\3.GO和KEGG富集分析\\KEGG富集分析")      #设置工作目录
rt=read.table("Genes.txt", header=F, sep="\t", check.names=F)     #读取输入文件

#获取核心基因的列表,将基因名称转换为基因id
genes=unique(as.vector(rt[,1]))
entrezIDs=mget(genes, org.Hs.egSYMBOL2EG, ifnotfound=NA)
entrezIDs=as.character(entrezIDs)
rt=data.frame(genes, entrezID=entrezIDs)
gene=entrezIDs[entrezIDs!="NA"]        #去除基因id为NA的基因
#gene=gsub("c\\(\"(\\d+)\".*", "\\1", gene)

#kegg富集分析
kk <- enrichKEGG(gene=gene, organism="hsa", pvalueCutoff=1, qvalueCutoff=1)
KEGG=as.data.frame(kk)
KEGG$geneID=as.character(sapply(KEGG$geneID,function(x)paste(rt$genes[match(strsplit(x,"/")[[1]],as.character(rt$entrezID))],collapse="/")))
KEGG=KEGG[(KEGG$pvalue<pvalueFilter & KEGG$qvalue<qvalueFilter),]
#保存富集结果
write.table(KEGG, file="KEGG.txt", sep="\t", quote=F, row.names = F)

#定义显示通路的数目
showNum=30
if(nrow(KEGG)<showNum){
	showNum=nrow(KEGG)
}


    # 准备数据
    plot_data <- KEGG[1:min(showNum, nrow(KEGG)),]
    plot_data$Description <- factor(plot_data$Description, 
                                  levels = rev(plot_data$Description))
    
    # 创建自定义柱状图 
   pdf(file="KEGG柱状图.pdf",  width=9, height=7)
p <- ggplot(plot_data, aes(x=Description, y=-log10(pvalue), fill=-log10(pvalue))) +
    geom_bar(stat="identity", color = "black") +
    scale_fill_gradient(low = "#2600fc", high = "#fc0012") +
    coord_flip() +
    labs(x="", y="-log10(pvalue)", title="KEGG Pathway Enrichment") +
    theme_minimal() +
    theme(
        axis.text.y  = element_text(size=13, color="black"),  # 增大字体+黑色
        panel.border  = element_rect(colour = "black", fill=NA, size=1)
    )
print(p)
dev.off()  
    
