GOplot|宝藏R包,拯救你的GO富集结果,杜绝平庸的条形图

本文涉及的产品
简介: `GOplot`是R中的一个宝藏包,用于GO富集分析的创新可视化。它提供多种图表类型,如GOBar、GOBubble、GOCircle、GOChord、GOHeat和GOCluster,以及GOVenn。通过调整参数,用户可自定义颜色、大小和排序。例如,GOBar和GOBubble展示富集条形和气泡,GOCircle以环形图表示,GOChord描绘基因和过程间关系,而GOHeat和GOCluster提供热图和聚类视图。此外,还有GOVenn用于绘制Venn图。包简化了数据准备和绘图过程,适合快速高效地展示复杂分析结果。别忘了引用创始人Walter等人的工作。

前言

今天给大家分享一个宝藏R包:GOplot

包如其名,专作GO富集分析的可视化工具包。函数网上教程不少,但这里笔者已经列出了所有可修改的常用参数,改色改大小排序自定义,整整齐齐。

百行不到的代码,直接上升一个level:
image.png

数据准备

下载包,加载数据,这里要留意数据的格式,这是把差异分析的结果也纳入了的

# install.packages('GOplot')
library("GOplot")
data(EC)
head(EC$david)
head(EC$genelist)
circ <- circle_dat(EC$david, EC$genelist)

GOBar

若把order.by.zscore修改为T则改为取绝对值进行排序

GOBar(circ, 
      # category == 'BP',
      display = 'multiple', # single
      order.by.zscore = F, #order
      title = 'Z-score coloured barplot',
      zsc.col = c('yellow', 'black', 'cyan'))

image.png

GOBubble

进行了一步过滤,以减少重叠。若不过滤可直接将数据改为circ

# 筛选重叠
reduced_circ <- reduce_overlap(circ, overlap = 0.75)
GOBubble(reduced_circ, # circ
         title = 'Bubble plot', 
         colour = c("#4DBBD5FF","#EFD500FF","#F39B7FFF"), 
         table.legend = T,
         bg.col = T,
         ID = T, # GO id
         display = 'multiple', 
         labels = 3)

image.png

GOCircle

IDs <- c('GO:0007507', 'GO:0001568', 'GO:0001944', 'GO:0048729', 'GO:0048514', 'GO:0005886', 'GO:0008092', 'GO:0008047')
GOCircle(circ, nsub = IDs,
         rad1 = 2, 
         rad2 = 3,
         table.legend = T,
         zsc.col = c('darkgoldenrod1', 'black', 'cyan1'),
         lfc.col = c("#F39B7FFF","#4DBBD5FF"),
         label.size = 5,
         label.fontface = "bold")

image.png

GOChord

这里需要把数据转换成长格式

chord <- chord_dat(data = circ, genes = EC$genes, process = EC$process)
GOChord(chord,
        title = "GOChord Plot",
        space = 0.02, 
        gene.order = 'logFC', 
        gene.space = 0.25, 
        gene.size = 3,
        nlfc = 1,
        lfc.col = c('darkgoldenrod1', 'black', 'cyan1'),
        lfc.min = -4,
        lfc.max = 4,
        border.size = 0.5,
        process.label = 8)

GOHeat

GOHeat(chord[,-8], # 剔除FC列
       nlfc = 0)

GOHeat(chord, 
       nlfc = 1, # 倒数第一列
       fill.col = c("#4DBBD5FF","#EFD500FF","#F39B7FFF"))

第一个是剔除FC列,默认统计富集的功能数量
image.png

第二个是保留FC列,指定参照倒数第一列差异倍数
image.png

GOCluster

这里是按FC聚类,可以将clust.by指定成按term聚类

GOCluster(circ, 
          EC$process, 
          metric = "euclidean", # 欧式距离
          clust.by = 'logFC', # 'term'
          nlfc = F, # T为多列FC,F则为一列FC
          lfc.col = c('darkgoldenrod1', 'black', 'cyan1'),
          lfc.min = -3,
          lfc.max = 3,
          lfc.space = 0,
          lfc.width = 0.5,
          term.col = ggsci::pal_frontiers(alpha = 0.7)(7), # max = 20
          term.space = 0.5,
          term.width = 2)

image.png

GOVenn

红色为上调基因个数,紫色为下调基因个数,灰色则为交集后上下调冲突的基因个数

l1 <- subset(circ, term == 'heart development', c(genes,logFC))
l2 <- subset(circ, term == 'plasma membrane', c(genes,logFC))
l3 <- subset(circ, term == 'tissue morphogenesis', c(genes,logFC))
GOVenn(l1,l2,l3, 
       label = c('heart development', 'plasma membrane', 'tissue morphogenesis'),
       lfc.col = c("#EE0000FF","#808180FF","#5F559BFF"),
       circle.col = c("#EFD500FF","#4DBBD5FF","#F39B7FFF"),
       plot = T)

image.png

shiny

这里作者还做了个venn的shiny交互网站,有兴趣的小伙伴可以试一试:https://wwalter.shinyapps.io/Venn/

小总结

告别ggplot2手画,GO富集的红蓝气泡图、柱状图已经审美疲劳了。这个GOplot应该是懒癌晚期拯救者了,都是打包好的函数直接换数据运行即可,记得文献引用上:Walter, Wencke, Fátima Sánchez-Cabo, and Mercedes Ricote. "GOplot: an R package for visually combining expression data with functional analysis." Bioinformatics (2015): btv300.

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
1天前
|
安全 测试技术 Go
Golang深入浅出之-Go语言单元测试与基准测试:testing包详解
【4月更文挑战第27天】Go语言的`testing`包是单元测试和基准测试的核心,简化了测试流程并鼓励编写高质量测试代码。本文介绍了测试文件命名规范、常用断言方法,以及如何进行基准测试。同时,讨论了测试中常见的问题,如状态干扰、并发同步、依赖外部服务和测试覆盖率低,并提出了相应的避免策略,包括使用`t.Cleanup`、`t.Parallel()`、模拟对象和检查覆盖率。良好的测试实践能提升代码质量和项目稳定性。
17 1
|
1天前
|
安全 Go
Golang深入浅出之-Go语言标准库中的文件读写:io/ioutil包
【4月更文挑战第27天】Go语言的`io/ioutil`包提供简单文件读写,适合小文件操作。本文聚焦`ReadFile`和`WriteFile`函数,讨论错误处理、文件权限、大文件处理和编码问题。避免错误的关键在于检查错误、设置合适权限、采用流式读写及处理编码。遵循这些最佳实践能提升代码稳定性。
24 0
|
1天前
|
缓存 编译器 Go
【Go语言专栏】理解Go语言的包管理机制
【4月更文挑战第30天】Go语言包管理是构建可维护应用的关键,从基本概念如包导入、初始化到版本管理和依赖管理,再到Go Modules的引入,简化了过程。包的可见性规则和社区生态也至关重要。理解并掌握这些机制对于编写高质量Go代码具有决定性影响。随着Go语言的持续发展,包管理将更加强大易用。
|
1天前
|
安全 Unix Go
Golang深入浅出之-Go语言中的时间与日期处理:time包详解
【4月更文挑战第26天】Go语言的`time`包提供处理日期和时间的功能,包括`time.Time`类型、时间戳、格式化与解析。本文讨论了核心概念、常见问题(如时区处理、格式字符串混淆、超时控制和并发安全)及解决方法。推荐使用`time.LoadLocation`管理时区,熟悉时间格式规则,用`context`精确控制超时,并注意并发安全。文中通过代码示例展示了如何获取格式化时间、计算时间差以及创建定时任务。学习和应用这些知识可提高程序的健壮性和准确性。
30 2
|
1天前
|
XML JSON Go
Golang深入浅出之-XML处理在Go语言中的实现:encoding/xml包
【4月更文挑战第26天】Go语言的`encoding/xml`库提供XML处理,包括序列化和反序列化。本文讨论了XML处理的基础,如`xml.Marshal`和`xml.Unmarshal`函数,以及常见问题和易错点,如标签命名、结构体嵌套、omitempty标签和命名空间。建议遵循标签命名规则,正确处理嵌套和属性,谨慎使用omitempty,以及理解并有效利用命名空间。文中还给出了基础示例和处理XML属性的代码示例,帮助读者掌握XML处理技巧。
23 1
Golang深入浅出之-XML处理在Go语言中的实现:encoding/xml包
|
1天前
|
数据管理 Go 开发者
Golang深入浅出之-Go语言上下文(context)包:处理取消与超时
【4月更文挑战第25天】Go语言中的`context`包在并发、网络请求和长任务中至关重要,提供取消、截止时间和元数据管理。本文探讨`context`基础,如`Background()`、`TODO()`、`WithCancel()`、`WithDeadline()`和`WithTimeout()`。常见问题包括不当传递、过度使用`Background()`和`TODO()`以及忽略错误处理。通过取消和超时示例,强调正确传递上下文、处理取消错误和设置超时以提高应用健壮性和响应性。正确使用`context`是构建稳定高效Go应用的关键。
22 1
|
1天前
|
Go 开发者
Golang深入浅出之-Go语言上下文(context)包:处理取消与超时
【4月更文挑战第23天】Go语言的`context`包提供`Context`接口用于处理任务取消、超时和截止日期。通过传递`Context`对象,开发者能轻松实现复杂控制流。本文解析`context`包特性,讨论常见问题和解决方案,并给出代码示例。关键点包括:1) 确保将`Context`传递给所有相关任务;2) 根据需求选择适当的`Context`创建函数;3) 定期检查`Done()`通道以响应取消请求。正确使用`context`包能提升Go程序的控制流管理效率。
21 1
|
17小时前
|
JSON 前端开发 Go
lucky - go 语言实现的快速开发平台
go 语言实现的快速开发平台,自动生成crud代码,前端页面通过json配置,无需编写前端代码。
6 0
|
1天前
|
存储 Java Go
Go 语言切片如何扩容?(全面解析原理和过程)
Go 语言切片如何扩容?(全面解析原理和过程)
12 2
|
1天前
|
负载均衡 Go 调度
使用Go语言构建高性能的Web服务器:协程与Channel的深度解析
在追求高性能Web服务的今天,Go语言以其强大的并发性能和简洁的语法赢得了开发者的青睐。本文将深入探讨Go语言在构建高性能Web服务器方面的应用,特别是协程(goroutine)和通道(channel)这两个核心概念。我们将通过示例代码,展示如何利用协程处理并发请求,并通过通道实现协程间的通信和同步,从而构建出高效、稳定的Web服务器。