首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言实现基因突变位点可视化

R语言实现基因突变位点可视化

作者头像
一粒沙
发布2019-07-31 11:17:36
5K0
发布2019-07-31 11:17:36
举报
文章被收录于专栏:R语言交流中心R语言交流中心

基因突变位点的标注图形绘制大家应该都见过如下图:

那么在R语言中如何绘制这样的图形呢,今天给大家介绍在R语言中绘制棒棒糖的图,有人也直接叫它棒棒糖图。在trackViewer中可以实现其绘制。

首先,它的安装需要利用bioconductor安装:

source("https://bioconductor.org/biocLite.R")

biocLite("trackViewer")

接下来我们看下其如何实现棒棒糖图像的绘制:

首先我们看下基础图形的实现,分为两部分:

1. SNP数据的构建,其实就是一个含有SNP位置的向量。Eg:SNP<- c(10, 12, 1400, 1402)

2. 基因整体框架以及蛋白质域的构建,利用Granges函数进行构建。其根据染色体位置进行构建,这样可以直接指定SNP整体所在的染色体位置。绘图使用的函数是lolliplot ().

我们首先看下lolliplot的参数情况:

其中yaxis和xaxis可以进行横纵轴的设置,通过向量或者TRUE/FLALSE控制其显示和显示什么。Type可以进行棒棒糖样子的设置。

其他的参数都是通用参数,参照原始plot就可以。

Eg:

Chr1<- GRanges("chr1",IRanges(SNP, width=1, names=paste0("snp", SNP)))

features <- GRanges("chr1",IRanges(c(1, 501, 1001),

width=c(120,400, 405),

names=paste0("block", 1:3)))

lolliplot(Chr1, features)

当然我们也可以通过IRanges进行横坐标的范围缩放。Eg:

gr <- GRanges("chr1",IRanges(1000,2000, names="TP53"))

lolliplot(Chr1, features,ranges=gr)

前期的图形绘制基本完成,接下来我们对图形进行进一步的美化修饰:

首先是蛋白质域颜色的调整,直接对feature参数中的添加fill列进行颜色赋值。Eg:

features$fill <- c("#FF8833","#51C6E6", "#DFA32D")

lolliplot(sample.gr, features)

当然我们棒棒糖也都是可以赋予不同的颜色的。只是这个颜色是通过数字在包中被设置好的。我们可以通过sample.int()赋予其相应的颜色然后展示在图中。Eg:

Chr1$color <- sample.int(6, length(SNP),replace=TRUE)

Chr1$border <-sample(c("gray80", "gray30"), length(SNP), replace=TRUE)

lolliplot(Chr1, features)

棒棒糖不仅仅可以修改颜色,我们还可以对其进行编号。通过添加label属性。Eg:

Chr1$label <-as.character(1:length(sample.gr))

Chr1$label.col <- "white"

lolliplot(Chr1, features)

我们的蛋白质域也是可以进行修改的,我们可以设置其高度,从而凸显一些蛋白域。Eg:

features$height <- c(0.02, 0.05, 0.08)

lolliplot(Chr1, features)

我们还可以对突变点的数量进行展示,通过对应点的个数展示突变的数量。Eg:

Chr1$score <- sample.int(5,length(sample.gr), replace = TRUE)

lolliplot(Chr1, features)

当然如果觉得纵坐标无需展示的话也可以通过lolliplot中的参数yaxis=False来设置纵轴消失。为了方便大数据的图形绘制,本包对图变数超过10的做了进一步的优化。Eg:

Chr1$score <- sample.int(200,length(SNP), replace=TRUE)

lolliplot(Chr1, features)

我们对X轴进行自定义也是可以的,下面是自定义的代码:

xaxis <- c(1, 200, 400, 701, 1000, 1200,1402) ## define the position

lolliplot(Chr1, features, xaxis=xaxis)

自定义后的X轴我们还可以进一步的编辑,用自己想用的文字代替坐标数值。Eg:

names(xaxis) <- xaxis # define thelabels

names(xaxis)[4] <- "center"

lolliplot(Chr1, features, xaxis=xaxis)

接下来就是为突变的点进行legend注释。Eg:

legend <-Chr1$color ## legend fill color

names(legend) <-paste0("legend", letters[1:4]) ## legend labels

lolliplot(Chr1, features, legend=legend)

有些时候我们的SNP直线显示可能太长,那就意味着我们需要对其进行倾斜。我们可以为我们的数据添加label.parameter.rot列,就可以修改倾斜度。Eg:

Chr1$label.parameter.rot <- 45

lolliplot(Chr1, features, legend=legend)

那么我们的SNP的labels也是可以修改的。具体的修改方法就是添label.parameter.gp列设置颜色。Eg:

Chr1$label.parameter.rot <- 90#让倾斜角度回到垂直

Chr1$label.parameter.gp <-gpar(col="brown")

lolliplot(Chr1, features, legend=legend)

最后我们为大家介绍更加晋级的图形绘制。那就是带饼图的棒棒糖图。首先我们要去除前面添加的所有的数值的列,除了"color", "fill", "lwd", "id"and "id.col"。然后绘制。Eg:

Chr1$score <- NULL ## must be removed,because pie will consider all the numeric columns except column"color", "fill", "lwd", "id" and"id.col".

Chr1$label <- NULL

Chr1$label.col <- NULL

x <- sample.int(100, length(SNP))

Chr1$value1 <- x

Chr1$value2 <- 100 - x

## the length of color should be no lessthan the values number

Chr1$color <-rep(list(c("#87CEFA", '#98CE31')), length(SNP))

Chr1$border <- "gray30"

lolliplot(Chr1, features,type="pie")

至此,所有的图形的展示形式都已经介绍完毕了。当然还有更复杂的绘制情况,我觉得一般也用不到,在这不做介绍了。如果需要可以看下官方教程。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言交流中心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档