R-基因-富集圈图/和弦图

        看到别人文章里面的GO和KEGG富集分析结果,画的一张图有通路有基因,于是,懒惰的本小卡拉弄了一个R脚本,满足自己的小好胜心!

一、文件准备

  • GO/KEGG富集分析结果文件,格式如下:

  • 差异表达基因文件,格式如下:

二、R代码

getwd()

rm=list(ls)

getwd()
setwd("D:/Rcicrcleplot")

library(ggplot2)
library(circlize)
library(GOplot)
library(tidyverse)
library(dplyr)

list.files()

go<-read.csv("GO.csv",header=T,sep=",")
View(go)

DEG<-read.csv("DEG.csv",header=T,sep=",")
View(DEG)

go<- go[,c("ID","Count","Description","ONTOLOGY","pvalue","geneID")]
View(go)

pro<-DEG[,c("geneSymbol","log2FoldChange")]
View(pro)

go$GeneList<-gsub("/",",",go$geneID)
View(go)

go<- go[,c("ID","Count","Description","ONTOLOGY","pvalue","GeneList")]
View(go)

pro<-DEG[,c("geneSymbol","log2FoldChange")]
View(pro)

colnames(go)<-c( 'ID','ObservedGeneNum', 'term','category','adj_pval','genes')
View(go)

colnames(pro)<-c("ID","logFC")
View(pro)

#pro <- pro %>% filter(logFC > log2(1.2) | logFC < -log2(1.2))
#View(pro)

circ <- circle_dat(go,pro)
View(circ)
#write.table(circ,file="circ.xls",col.names=T,row.names=T,quote=F,sep="\t")

#head(go)
go <- go[order(go$ObservedGeneNum), ]
View(go)

gop<-go[1:5,]
gop <- go
View(gop)


###展示基因与GO Terms关系的圈图 (GOChord())###

chord <-chord_dat(data = circ, genes = pro,process = gop$term)
#write.table(chord,file="chord.xls",col.names=T,row.names=T,quote=F,sep="\t")

cols<- gop$term

pdf("cicrplot.pdf",width=15,height=16)

#GOChord(data, title, space, gene.order, gene.size,gene.space, nlfc = 1,lfc.col, lfc.min,lfc.max, ribbon.col, border.size, process.label, limit)
#data: 二进制矩阵
#title:标题
#space:基因对应方块之间的距离
#gene.order:基因排列顺序
#gene.size:基因标签大小
#nlfc:logFC 列的数目
#lfc.col:LFC颜色,定义模式:c(color for low values, color for the mid point, color for the highvalues)
#lfc.min:LFC最小值
#lfc.max:LFC最大值
#ribbon.col:向量定义基因与GO Term间条带颜色
#border.size:基因与GO Term间条带边框粗细
#process.label:GO Term 图例文字大小
#limit:c(3, 2),两个数字;第一个参数筛选基因(保留至少存在于3个GO Term的基因),第二个参数筛选GO Term(保留至少包含2个基因的GO Term )

GOChord(chord,
           space = 0.02,
           gene.order = 'logFC',
           gene.space = 0.25,
           #border.size = NA ,
           gene.size = 5,
           ribbon.col=brewer.pal(5, "Set3"),
           #process.label = 15
           ) +
  guides(size = guide_legend("GO Terms", ncol = 2, byrow = T, 
                             override.aes = list(shape = 22, fill = brewer.pal(5, "Set3"), 
                                                 size = 8)))
dev.off()

###泡图(GOBubble())###
pdf("GOBubbleplot.pdf",width=15,height=16)
GOBubble(circ, labels = 3)
dev.off()

pdf("GOBubble_multipleplot_.pdf",width=15,height=16)
GOBubble(circ, 
         #title = 'Bubble plot', 
         colour =c('orange', 'darkred', 'gold'), 
         display = 'multiple', 
         labels = 3)
dev.off()

### 圈图展示基因富集分析结果(GOCircle())###
pdf("GOCircleplot_.pdf",width=10,height=11)
GOCircle(circ)
dev.off()

###基因与GO Term的热图(GOHeat) ###
#nlfc = 1:颜色对应l
#ogFC nlfc = 0:颜色对应每个基因注释了到了几个GO Term
pdf("GOHeat_plot_.pdf",width=8.5,height=8)
GOHeat(chord, nlfc = 1, fill.col = c('red', 'yellow','green'))
dev.off()


###聚类(GOCluster)###
#GOCluster()调用R内置函数hclust 根据功能分内进行层次聚类。
pdf("GOClusterterm_plot_.pdf",width=11,height=11)
GOCluster(circ, 
          gop$term, 
          clust.by = 'logFC',
          term.width = 2, 
          term.col = brewer.pal(length(gop$term), "Set3"))+
  guides(size = guide_legend("GO Terms", ncol = 2, byrow = T, 
                             override.aes = list(shape = 22, 
                                                 fill = brewer.pal(length(gop$term), "Set3"), 
                                                 size = 8)))
dev.off()

三、图(很多种,这里随便挑几个展示)

自己研究的小代码,仅供相互交流学习,请勿用于商业用途,未经允许,禁止转载,谢谢! 

### 使用R语言绘制差异表达基因的GO富集和弦 #### GO富集分析 在R语言中,`clusterProfiler` 是一个强大的工具包,专门用于功能注释和富集分析。通过 `clusterProfiler` 可以轻松完成基因本体论(Gene Ontology, GO)的富集分析[^3]。 以下是实现差异表达基因的GO富集分析的代码示例: ```r library(clusterProfiler) library(org.Hs.eg.db) # 假设 diff_genes 是差异表达基因列表 diff_genes <- c("TP53", "EGFR", "BRCA1") # 进行GO富集分析 ego <- enrichGO(gene = diff_genes, universe = keys(org.Hs.eg.db), keyType = "SYMBOL", ont = "BP", # 生物过程 (BP), 细胞组成 (CC), 或分子功能 (MF) pAdjustMethod = "BH", pvalueCutoff = 0.05, qvalueCutoff = 0.2, readable = TRUE) # 查看结果 print(ego) # 可视化GO富集结果 dotplot(ego) + theme_bw() barplot(ego) + theme_bw() # 导出结果 write.csv(as.data.frame(ego), file = "go_enrichment_results.csv") ``` 上述代码实现了以下功能: - 加载必要的库并定义差异表达基因列表。 - 调用 `enrichGO()` 函数执行GO富集分析,并指定生物学过程(BP)、细胞成分(CC)或分子功能(MF)作为目标领域。 - 结果可以通过点状 (`dotplot`) 和条形 (`barplot`) 展现出来。 --- #### 弦绘制 对于弦的绘制,推荐使用 `circlize` 包。此包提供了灵活的功能来创建复杂的圆形布局表,包括弦[^1]。 下面是一个简单的字符串绘制代码示例: ```r library(circlize) library(RColorBrewer) # 创建假数据矩阵 mat <- matrix(runif(100), nrow = 10) rownames(mat) <- paste0("Row", 1:10) colnames(mat) <- paste0("Col", 1:10) # 定义颜色方案 color_pool <- brewer.pal(8, "Set1")[1:min(nrow(mat), 8)] # 初始化圆 circos.par(start.degree = 90, gap.after = rep(5, times = ncol(mat))) chordDiagram(mat, grid.col = setNames(color_pool, rownames(mat)), annotationTrack = "grid", preAllocateTracks = list(track.height = 0.1)) # 添加标签和其他装饰 circos.trackPlotRegion(track.index = 1, panel.fun = function(x, y) { xlim = get.cell.meta.data("xlim") ylim = get.cell.meta.data("ylim") sector.name = get.cell.meta.data("sector.index") circos.text(mean(xlim), ylim[1], sector.name, facing = "clockwise", niceFacing = TRUE) }) clear lorem ipsum text ``` 以上代码展示了如何构建一个基本的弦- 数据由随机数生成器填充而成,实际应用时应替换为真实的数据矩阵。 - 颜色调色板来自 R 的内置函数 `brewer.pal`,可以根据需求调整配色方案。 - 参数设置允许自定义间隙宽度、起始角度以及其他视觉属性^。 需要注意的是,如果数据量过大,则可能导致像变得杂乱无章,难以解读。因此,在设计过程中需谨慎处理节点数量与边的数量之间的平衡问题[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值