GO富集绘图绘制方法,零基础教程,替换数据直接作图,完成版R语言脚本

喜儿
• 阅读 1013

速绘 丨 GO富集气泡图

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

前言介绍

下面是一个GO富集分析的结果数据表:
GO富集绘图绘制方法,零基础教程,替换数据直接作图,完成版R语言脚本

  • 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, 细胞成分
    GO富集绘图绘制方法,零基础教程,替换数据直接作图,完成版R语言脚本
    下面开始正式的绘图方法原理介绍

    绘图方法

    加载数据与参数

# 本脚本用于对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”即可获得。

本文由mdnice多平台发布

点赞
收藏
评论区
推荐文章
Irene181 Irene181
4年前
python数据分析——pyecharts柱状图全解(小白必看)
一、pyecharts简介pyecharts主要基于Web浏览器进行显示,绘制的图形比较多,包括折线图、柱状图、饼图、漏斗图地图和极坐标图等。使用pyecharts绘图代码量很少,但绘制的图形比较美观。pyecharts分为v0.5.X和v1两个大版本,v0.5.X和v1间不兼容,v1是一个全新的版本v0.5.X支持Python2
九路 九路
4年前
一篇文章彻底弄懂go语言方法的本质
Go语言不支持经典的面向对象语法元素,比如:类、对象、继承等。但Go语言也有方法(method)。和函数相比,Go语言中的方法在声明形式上仅仅多了一个参数,Go称之为receiver参数。而receiver参数正是方法与类型之间的纽带。Go方法的一般声明形式如下:gofunc(receiverT/T)MethodName(参数列表)
科林-Colin 科林-Colin
4年前
GO富集分析
  GO的主要用途之一是对基因组进行富集分析。例如,给定一组在特定条件下上调的基因,富集分析将使用该基因组的注释发现哪些GO术语被过度表示(或未充分表示)。  富集分析工具                用户可以直接从GOC网站的主页进行浓
Stella981 Stella981
4年前
SVG绘制饼状图
SVG绘制饼状图昨天学习了基本的SVG,下面是使用SVG绘制饼状图创建SVG空间创建SVG需要一个document.createElementNS()方法一个一个setAttribute()方法编写如下js,将会创建一个svg空间//创建一个XML命名空间varsvgns"http:
Wesley13 Wesley13
4年前
Go 语言 2019 调查报告发布(内含 Go 语言图谱下载)
!424头图.jpg(https://ucc.alicdn.com/pic/developerecology/5bd982ab75ce45aa84ae0c5fd245d27e.jpg)<关注公众号,回复 Go 即可下载清晰知识图谱对Go语言感兴趣但又不知从何学起的同学,可以参考一下Go语言系列文章:为什么你要选择
Easter79 Easter79
4年前
SVG绘制饼状图
SVG绘制饼状图昨天学习了基本的SVG,下面是使用SVG绘制饼状图创建SVG空间创建SVG需要一个document.createElementNS()方法一个一个setAttribute()方法编写如下js,将会创建一个svg空间//创建一个XML命名空间varsvgns"http:
Stella981 Stella981
4年前
Python使用Plotly绘图工具,绘制柱状图
使用Plotly绘制基本的柱状图,需要用到的函数是graph\_objs中Bar函数通过参数,可以设置柱状图的样式。通过barmod进行设置可以绘制出不同类型的柱状图出来。我们先来实现一个简单的柱状图:coding:utf8importplotlyaspyimportplotly
Wesley13 Wesley13
4年前
R 语言绘制环状热图
作者:佳名来源:简书R语言文集1\.读取并处理基因表达数据这是我的基因表达量数据:!(https://oscimg.oschina.net/oscnet/505049817d7347a7acffef1befd7f67d.png"图Fig1
Wesley13 Wesley13
4年前
R 语言代写绘制功能富集泡泡图
功能富集泡泡图功能富集分析用来展示某一组基因(一般是单个样品上调或下调的基因)倾向参与哪些功能调控通路,对从整体理解变化了的基因的功能和潜在的调控意义具有指导作用,也是文章发表中一个有意义的美图。通常会用柱状图、泡泡图和热图进行展示。热图的画法之前已经介绍过,这次介绍下富集分析泡泡图,其展示的信息是最为全面的,也是比较抓人眼球的。做基因功能富集分
Wesley13 Wesley13
4年前
GOJS使用
GOJS使用前端拓扑图1.基础版:引入go.js<scriptsrc"https://my.oschina.net//u/4402671/blog/3234986/js/go.js"type"text/javascript"</script
Wesley13 Wesley13
4年前
GO富集分析示例【华为云技术分享】
版权声明:本文为博主原创文章,遵循CC4.0BYSA(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fcreativecommons.org%2Flicenses%2Fbysa%2F4.0%2F)版权协议,转载请附上原文出处链接和本声明。本文链接:https://blo