基因突变位点的标注图形绘制大家应该都见过如下图:
那么在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")
至此,所有的图形的展示形式都已经介绍完毕了。当然还有更复杂的绘制情况,我觉得一般也用不到,在这不做介绍了。如果需要可以看下官方教程。