利用ggbio对生物数据进行可视化

利用ggbio对生物数据进行可视化

ggbio是图形语法(graphic grammar)在生物数据领域上的拓展,任何ggbio得到的结果都能与ggplot2进行互动,而不是简单封装。

tracks

ggbio对ggplot2的一个拓展是其提供了tracks用于以不同轨的方式比较数据,比如说比较两个不同的时间序列。

library(ggbio)
df1 <- data.frame(time = 1:100, score = sin((1:100)/20) * 10)
p1 <- qplot(data = df1, x = time, y = score, geom = "line")
df2 <- data.frame(time = 30:120, score = sin((30:120)/20) * 10, value = rnorm(120 -
30 + 1))
p2 <- ggplot(data = df2, aes(x = time, y = score)) + geom_line() + geom_point(size = 4,
aes(color = value))
lst <- list(time1 = p1, time2 = p2)
tracks(lst)
img_90a92aeb0cf6c66e45638bc3d3f3433c.png
tracks

tracks支持多种方式定制

  • height: 定义某个track的高度
  • bcColor: 定义某个轨道背景颜色
  • labeled: 对某个轨道的标签进行命名
  • fixed: 控制标度的固定还是不固定
  • mutable: 控制作图结果能否使用+更改tracks

此外tracks还拓展了ggplot2的主题,以theme_tracks_*方式命名.

最后这些修改方式都可以通过reset一键还原到之前backup的地方。

mold

ggbio支持Bioconductor的几个核心数据结构的可视化, 如IRange和GenomicRange, 而ggplot2则是主要处理data.frame.为了方便衔接,作者开发了mold将Biconductor的核心数据结构转换成data.frame. mold相对于as.data.frame这种简单粗暴的转换,保留了原来数据结构的更多信息,创建了更多变量统计值。目前支持eSet, GRanges, IRanges, GRangesList, Seqinfo, matrix, Views, ExpressionSet SummarizedExperiment, Rle, RleList。

PS: mold函数在biovizBase包中。

ggbio拓展的图形语法

判断一个人是否懂ggplot2,只要问他"什么是图形语法"即可

一张统计图形就是从数据到几何对象(geometric object, 点、线、大小等)的图形属性(aesthetic attribute, 颜色、形状、大小)的一个映射。此外,图形中还可能包括数据的统计变换(statistical transformation), 最后绘制在某个特性的坐标轴(coordinate system)中,而分面(facet)则可以用来生成数据不同子集的图形。

因此真正理解图形语法的人,看了下面这张图就会用ggbio了。

[图片上传失败...(image-154052-1516168383746)]

有些细节不懂,就可以翻翻http://www.bioconductor.org/packages/release/bioc/manuals/ggbio/man/ggbio.pdf

几个案例

基因结构图

这部分操作涉及到AnnotationHubGenomicFeatures两个R包,这些在我的用Bioconductor对基因组注释有过比较详细的介绍。如果理解了那两个R包的使用,那么起始用起来也就很简单,无非就是构建一个ggbio能用的GRanges对象而已,步骤如下:

  1. 使用select根据基因ID找到CDS ID
  2. 使用cds根据CDS ID筛选区域
  3. 对区域使用geom_arrowrect作图
# 加载拟南芥TxDb
library(AnnotationHub)
ah <- AnnotationHub()
TAIR_tx <- ah[['AH52247']]

# 1. 根据基因ID找到CDS ID
keys <- c('AT3G27920')
cds_region <- select(TAIR_tx, keys =keys, columns = 'CDSID', keytype = 'GENEID')
# 2. 根据CDS ID创建GenomicRanges
cds_gr <- cds(TAIR_tx, filter = list(cds_id = cds_region$CDSID))
# 3. 作图
library(ggplot2)
ggplot(cds_gr) + geom_arrowrect(fill='black') + theme_clear() + theme_alignment()
img_fa95a77b726f3ee07503b3a404564dd9.png
有点丑
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值