速绘丨GO富集气泡图绘制方法,利用R语言ggplot2包快速绘制,完整脚本可重复绘图

简介: 速绘丨GO富集气泡图绘制方法,利用R语言ggplot2包快速绘制,完整脚本可重复绘图

速绘 丨 GO富集气泡图

本期分享一个快速绘制GO富集结果图的方法,主要使用R语言tidyverse包,只需导入数据即可一步出图,可以自定义显示的数目、颜色、筛选参数,从此以后绘制GO富集图只需1秒

前言介绍

下面是一个GO富集分析的结果数据表:

  • ID:表示具体的GO条目
  • Description:GO条目的描述
  • RatioF:分子是富集到这个GO条目上的gene的数目, 分母是所有输入的做富集分析的gene的数目
  • RatioB:分母是所有编码蛋白的基因中有GO注释的gene的数目,分子是注释到这个GO条目上面的gene数目
  • pvalue:富集的p值
  • p.adjust:校正之后的p值

通过以上数据可以绘制如下的气泡图,还可以进一步根据结果分成三类:

  • BP: biological process, 生物学过程
  • MF: molecular function, 分子功能
  • CC: cellular component, 细胞成分下面开始正式的绘图方法原理介绍

绘图方法

加载数据与参数

# 本脚本用于对TGT生成的GO结果作图
library(tidyverse)
rm(list=ls())
# 设置项目基本信息
file <- "GO-Table20230629105106.csv"  #数据文件名
job <- "20230629" #项目名称
out_info_num <- 30 #最大显示条目数
my_pvalue <- 1 #p值筛选条件
my_number <- 0 #数量筛选条件
color_1 <- c("blue","red") #颜色

将数据导入df变量中,然后修改colnames,使用管道操作符%>%对数据框进行筛选。首先,根据"Pvalue"列的值小于my_pvalue变量的值,保留满足条件的行。然后,继续筛选,仅保留"Number"列的值大于my_number变量的值的行。最终,经过筛选后的结果会存储回df数据框中。

df <- read.csv(file,header = T)
colnames(df) <- c("ID",
                  "Description",
                  "RatioF",
                  "RatioB",
                  "Pvalue",
                  "FDR",
                  "Number",
                  "Group",
                  "Gene")
df$Description <- factor(df$Description)
df <- df %>% filter(Pvalue < my_pvalue) %>% 
         filter(Number > my_number)

数据转换

调用分数转小数的函数,mixedToFloat相关介绍请见上一篇文章

df$RatioF <- mixedToFloat(df$RatioF)
df$RatioB <- mixedToFloat(df$RatioB)

首先,根据"RatioF"列的值对df进行升序排序,并将结果存储在df_plot中。

然后,从df_plot中提取"Description"列的唯一值,并将其存储在leve_des变量中。

接下来,将df_plot中的"Description"列转换为因子类型,并按照leve_des中的顺序设置水平值(levels)。

随后,从df_plot中保留前out_info_num行的数据,并将结果重新赋值给df_plot。这样就实现了对df_plot的行数限制。

最后,使用管道操作符%>%对df_plot进行操作,将所有含有缺失值的行删除,并将结果重新赋值给df_plot。

df_plot <- df[order(df$RatioF),]
leve_des <- unique(df_plot$Description)
df_plot$Description <- factor(df_plot$Description,levels = leve_des)
df_plot <- df_plot[1:out_info_num,]
df_plot <- df_plot %>% drop_na()

另外,需要对Group列进行替换,生成新的分类标注信息“MF”,“CC”,“BP”

# 使用mutate函数替换Group列的值
df_plot <- df_plot %>% 
  mutate(Group = case_when(
    Group == "molecular_function" ~ "MF",
    Group == "cellular_component" ~ "CC",
    Group == "biological_process" ~ "BP",
    TRUE ~ Group
  ))

绘制图像

接下来,使用ggplot2绘制气泡图:

ggplot(df_plot)+
  geom_point(aes(RatioF,Description,
                 color = Pvalue,
                 size = Number))+
  labs(x="GeneRatio",y="GO description") + 
  labs(title="")+
  scale_color_gradient(low = color_1[1],high=color_1[2],name="Pvalue")+
  theme_bw()+
  facet_grid("Group",scales = "free_y",space = "free_y")
ggsave(str_c("Fig_GO_plot_",job,".pdf"),
       width = 8,height = 8)

首先,使用geom_point函数在散点图中绘制数据点。散点的x轴表示RatioF,y轴表示Description。点的颜色基于Pvalue列的值,大小基于Number列的值。

接下来,使用labs函数设置x轴和y轴的标签文本,以及图表的标题。

然后,使用scale_color_gradient函数设置Pvalue颜色的渐变范围,并命名为"Pvalue"。调用theme_bw函数将图表的主题样式设置为黑白。

最后,使用facet_grid函数创建一个分面图,根据"Group"列的值将图表分为多个子图。scales参数设置y轴的刻度尺和标签自由缩放,space参数设置y轴的间距。

最终,使用ggsave函数将生成的图表保存为PDF文件,文件名由"Fig_GO_plot_"、job和".pdf"拼接而成,指定了输出文件的宽度和高度。

参考资料:
https://zhuanlan.zhihu.com/p/383654316
http://wheat.cau.edu.cn/TGT/m.html?navbar=GOEnrichment

“速绘”系列专注于分享便捷实用的作图脚本,低代码实现精美科研作图。主打的就是可重复使用,换套数据一行代码即可出图!本篇文章的绘图脚本已上传至后台,回复“GO29”即可获得。

相关文章
|
3月前
|
数据可视化 数据挖掘 图形学
R语言基础可视化:使用ggplot2构建精美图形的探索
【8月更文挑战第29天】 `ggplot2`是R语言中一个非常强大的图形构建工具,它基于图形语法提供了一种灵活且直观的方式来创建各种统计图形。通过掌握`ggplot2`的基本用法和美化技巧,你可以轻松地将复杂的数据转化为直观易懂的图形,从而更好地理解和展示你的数据分析结果。希望本文能够为你探索`ggplot2`的世界提供一些帮助和启发。
|
3月前
|
存储 数据采集 数据处理
R语言数据变换:使用tidyr包进行高效数据整形的探索
【8月更文挑战第29天】`tidyr`包为R语言的数据整形提供了强大的工具。通过`pivot_longer()`、`pivot_wider()`、`separate()`和`unite()`等函数,我们可以轻松地将数据从一种格式转换为另一种格式,以满足不同的分析需求。掌握这些函数的使用,将大大提高我们处理和分析数据的效率。
|
3月前
|
数据可视化
R语言自定义图形:ggplot2中的主题与标签设置
【8月更文挑战第30天】`ggplot2`作为R语言中功能强大的绘图包,其自定义能力让数据可视化变得更加灵活和多样。通过合理使用`theme()`函数和`labs()`函数,以及`geom_text()`和`geom_label()`等几何对象,我们可以轻松创建出既美观又富有表达力的图形。希望本文的介绍能够帮助你更好地掌握`ggplot2`中的主题与标签设置技巧。
|
16天前
|
编译器 Go 开发者
go语言中导入相关包
【11月更文挑战第1天】
27 3
|
28天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
42 3
|
1月前
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
67 11
|
1月前
|
存储 Go 数据库
Go语言Context包源码学习
【10月更文挑战第21天】Go 语言中的 `context` 包用于在函数调用链中传递请求上下文信息,支持请求的取消、超时和截止时间管理。其核心接口 `Context` 定义了 `Deadline`、`Done`、`Err` 和 `Value` 方法,分别用于处理截止时间、取消信号、错误信息和键值对数据。包内提供了 `emptyCtx`、`cancelCtx`、`timerCtx` 和 `valueCtx` 四种实现类型,满足不同场景需求。示例代码展示了如何使用带有超时功能的上下文进行任务管理和取消。
|
2月前
|
大数据 Shell Go
GO方法与自定义类型
本文详细介绍了 Go 语言中的自定义数据类型与方法。不同于传统的面向对象编程语言,Go 通过结构体 (`struct`) 和方法 (`method`) 来扩展自定义类型的功能。文章解释了如何定义结构体、创建方法,并探讨了值接收器与指针接收器的区别及应用场景。此外,还介绍了方法的可见性以及接收器的命名惯例。通过具体示例,帮助读者更好地理解和应用这些概念。
|
2月前
|
存储 Go
Golang语言基于go module方式管理包(package)
这篇文章详细介绍了Golang语言中基于go module方式管理包(package)的方法,包括Go Modules的发展历史、go module的介绍、常用命令和操作步骤,并通过代码示例展示了如何初始化项目、引入第三方包、组织代码结构以及运行测试。
49 3
|
3月前
|
存储 Ubuntu Go
在Ubuntu 16.04上安装Go 1.6的方法
在Ubuntu 16.04上安装Go 1.6的方法
47 1
下一篇
无影云桌面