ggplot2画富集气泡图

本文介绍如何使用R语言的ggplot2包绘制生物学通路富集分析的散点图,包括读取数据、调整点大小、颜色、主题等步骤,并提供了完整的代码示例。

用ggplot2来画富集分析图

library(ggplot2)
 
# 读取数据
pathway = read.table("./qwe.txt",header=T,sep="\t")
 
# 开始画图
p = ggplot(pathway,aes(richFactor,Pathway))
p + geom_point()
 
# 改变点的大小
p + geom_point(aes(size=Input-number))
 
# 四维数据的展示
pbubble = p + geom_point(aes(size=Input-number,color=-1*log10(Qvalue)))
 
# 自定义渐变颜色
pbubble + scale_colour_gradient(low="green",high="red")
 
# 绘制pathway富集散点图
pr = pbubble + scale_colour_gradient(low="green",high="red") + labs(color=expression(-log[10](Qvalue)),size="Gene number",x="Rich factor",y="Pathway name",title="Top20 of pathway enrichment")
# 改变图片的样式(主题)
pr + theme_bw()
## 保存图片
ggsave("out.pdf")   # 保存为pdf格式,支持 pdf,png,svg多重格式
ggsave("out.png")  # 保存为png格式
ggsave("out2.png",width=4,height=4)   # 设定图片大小
<think>我们正在处理一个关于绘制GO富集分析气泡图的函数代码请求。根据用户的问题,他想要获取用于绘制GO富集分析气泡图的函数代码。 在生物信息学中,GO富集分析气泡图是一种常见的可视化方式,用于展示基因富集在哪些GO term上,以及这些term的富集程度(如p值)和基因比例等。 根据引用[1]和引用[2],我们知道有一些包可以进行GO富集分析,并且可以整合到分析流程中。特别是引用[2]提到了一个用户友好的包,可能是指clusterProfiler(在R语言中),这是一个常用的富集分析工具。 因此,我们可以提供R语言的代码,使用clusterProfiler和ggplot2来绘制气泡图。如果用户没有指定语言,我们默认使用R,因为生物信息学中R更为常见。 步骤: 1. 安装并加载必要的包:clusterProfiler, org.Hs.eg.db(人类,如果是其他物种则更换),以及ggplot22. 进行GO富集分析。 3. 提取结果并绘制气泡图。 注意:用户需要提供基因列表(通常是差异表达基因的ENTREZ ID或SYMBOL),并指定物种。 下面是一个示例函数,它接受一个基因列表(SYMBOL),并返回一个气泡图。 注意:由于用户没有提供具体的基因列表,我们将使用一个示例基因列表。用户需要根据自己的数据替换。 代码示例: ``` # 安装包(如果需要) # if (!require("BiocManager", quietly = TRUE)) # install.packages("BiocManager") # BiocManager::install("clusterProfiler") # BiocManager::install("org.Hs.eg.db") # install.packages("ggplot2") library(clusterProfiler) library(org.Hs.eg.db) library(ggplot2) # 定义绘制GO富集分析气泡图的函数 # 参数: # gene_list: 基因符号(SYMBOL)的向量 # title: 的标题 # ont: GO子本体,可选"BP"(生物学过程),"MF"(分子功能),"CC"(细胞组分),默认为"BP" # pvalueCutoff: p值阈值,默认为0.05 # qvalueCutoff: q值阈值,默认为0.2 # showCategory: 展示的富集term的数量,默认为20 # 返回:一个ggplot2对象 draw_GO_bubble <- function(gene_list, title="GO Enrichment", ont="BP", pvalueCutoff=0.05, qvalueCutoff=0.2, showCategory=20) { # 将基因符号转换为ENTREZID gene_entrez <- bitr(gene_list, fromType="SYMBOL", toType="ENTREZID", OrgDb=org.Hs.eg.db) # 进行GO富集分析 ego <- enrichGO(gene = gene_entrez$ENTREZID, OrgDb = org.Hs.eg.db, ont = ont, pAdjustMethod = "BH", pvalueCutoff = pvalueCutoff, qvalueCutoff = qvalueCutoff, readable = TRUE) # 绘制气泡图 bubble_plot <- dotplot(ego, showCategory=showCategory, title=title) return(bubble_plot) } # 示例使用 # 假设我们有一个基因符号列表 # gene_symbols <- c("TP53", "EGFR", "BRCA1", "BRCA2", "PTEN", "AKT1", "VEGFA", "MYC", "JUN", "FOS") # 调用函数 # p <- draw_GO_bubble(gene_symbols, title="GO Enrichment for Example Genes") # 显示形 # print(p) ``` 注意:这个函数是针对人类的,如果是其他物种,需要更换OrgDb(例如小鼠:org.Mm.eg.db)。 另外,我们也可以提供使用enrichplot包的dotplot函数,它和clusterProfiler配合良好。 如果用户需要更多的自定义(比如修改颜色、点的大小等),可以进一步修改ggplot2对象。 相关问题: 1. 如何调整气泡图中点的大小和颜色? 2. 如果我的基因列表是其他物种,比如小鼠,应该怎么修改? 3. 如何将气泡图保存为片文件? 4. 除了气泡图,还有哪些方式可以展示GO富集分析结果? 引用说明: 我们在回答中参考了引用[1]和引用[2],其中引用[1]提到了GO富集分析,引用[2]提到了一个用户友好的包(这里我们使用了clusterProfiler,它是R中常用的包)。 因此,我们在回答末尾添加引用标识: [^1] [^2] 注意:引用[3]是关于单细胞分析的,与当前问题无关,因此不引用。</think>以下是用于绘制GO富集分析气泡图的R语言函数代码示例,基于`clusterProfiler`和`ggplot2`包实现: ```r # 加载必要库 library(clusterProfiler) library(org.Hs.eg.db) # 人类基因注释,其他物种需更换 library(ggplot2) # 定义绘制函数 draw_GO_bubble <- function(gene_list, title = "GO Enrichment Analysis", ont = "BP", # BP/MF/CC p_cutoff = 0.05, q_cutoff = 0.2, top_n = 15) { # 基因ID转换(SYMBOL转ENTREZID) gene_ids <- bitr(gene_list, fromType = "SYMBOL", toType = "ENTREZID", OrgDb = org.Hs.eg.db)$ENTREZID # GO富集分析 ego <- enrichGO(gene = gene_ids, OrgDb = org.Hs.eg.db, keyType = "ENTREZID", ont = ont, pAdjustMethod = "BH", pvalueCutoff = p_cutoff, qvalueCutoff = q_cutoff, readable = TRUE) # 提取结果并排序 ego_result <- as.data.frame(ego) ego_result <- ego_result[order(ego_result$p.adjust), ] # 选择显著项 if (nrow(ego_result) > top_n) { ego_result <- ego_result[1:top_n, ] } # 绘制气泡图 ggplot(ego_result, aes(x = GeneRatio, y = reorder(Description, GeneRatio), size = Count, color = -log10(p.adjust))) + geom_point(alpha = 0.8) + scale_color_gradient(low = "blue", high = "red", name = "-log10(adj.p)") + scale_size_continuous(range = c(3, 8), name = "Gene Count") + labs(x = "Gene Ratio", y = NULL, title = title) + theme_bw() + theme(axis.text.y = element_text(size = 10), panel.grid.major = element_blank()) } ### 使用示例 ### # 输入基因符号列表(替换为实际基因) my_genes <- c("TP53", "BRCA1", "EGFR", "AKT1", "VEGFA") # 生成气泡图 bubble_plot <- draw_GO_bubble( gene_list = my_genes, ont = "BP", # 生物学过程 p_cutoff = 0.05, top_n = 10 ) # 显示形 print(bubble_plot) ``` ### 关键参数说明: 1. **gene_list**:输入的基因符号列表(如`c("TP53", "BRCA1")`) 2. **ont**:GO子类,可选`BP`(生物学过程)、`MF`(分子功能)或`CC`(细胞组分) 3. **p_cutoff/q_cutoff**:显著性阈值 4. **top_n**:显示最显著的前N个条目 5. **颜色映射**:-log10(adj.p)值(红色越深越显著) 6. **点大小**:富集基因数量(点越大基因越多) ### 注意事项: 1. 需预先安装相关包:`BiocManager::install(c("clusterProfiler", "org.Hs.eg.db"))` 2. 非人类基因需更换注释库(如小鼠用`org.Mm.eg.db`) 3. 基因符号需与注释库匹配,可通过`bitr()`函数验证ID转换 4. 可通过修改`ggplot2`主题自定义颜色/字体/布局[^2] [^1]: GO富集分析通过识别基因集中过表达的功能术语,帮助解释高通量数据背后的生物学意义。 [^2]: clusterProfiler提供用户友好的函数集成,支持自定义可视化参数和管道分析流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值