gaston包作图/LD.plot/三角图/(漂亮的)连锁不平衡

2021-08-13  本文已影响0人  MYS_bio_man

贴一张图博您一笑(小小镇楼)

30snp位点相关性.png

前言

相比于四四方方的相关性图来说,有时候三角形图会让人眼睛一亮;当你见惯了方形图之后,偶见一此类图,会不会有新意、新鲜感。

# 上图代码如下
# install.packages("gaston") #事先安装此包
library(gaston)
data(AGT)
x <- as.bed.matrix(AGT.gen, AGT.fam, AGT.bim)
ld.x <- LD(x, c(1,ncol(x)))
LD.plot( ld.x[1:30,1:30])

1. 简单介绍一下,LD.plot{gaston}

LD.plot是gaston包的一个绘图展示函数,研究了一下,能够完整的展示snp在染色体上的位置关系,计算snp之间的相关性,并对相关性进行展示;此函数个性化比较强,升级其用法,可以用来展示各种相关性(剔除SNP信息即可),颜色、字体、边界等等个性化能力比较强,可以作为一个必须掌握的、较好的生信工具!!!
Description
Pretty plot of a Linkage Disequilibrium (LD) matrix #用于连锁不平衡画漂亮的图
Usage #函数使用方法如下
LD.plot(LD, snp.positions, max.dist = Inf, depth = nrow(LD),
graphical.par = list(mar = c(0,0,0,0)), cex.ld, cex.snp,
polygon.par = list(border = "white"),
color.scheme = function(ld) rgb(1,1-abs(ld),1-abs(ld)),
write.snp.id = TRUE, write.ld = function(ld) sprintf("%.2f", ld),
draw.chr = TRUE, above.space = 1 + 2*write.snp.id + draw.chr,
below.space = 1, pdf.file, finalize.pdf = TRUE)

2. 完整的举例

library(gaston) # 载入包
data(AGT) # load数据
x <- as.bed.matrix(AGT.gen, AGT.fam, AGT.bim) #将不同信息数据构建成矩阵
ld.x <- LD(x, c(1,ncol(x))) #计算SNP相关,构建LD矩阵
LD.plot( ld.x[1:20,1:20], snp.positions = x@snps$pos[1:20] ) # 画图(如下,只展示20SNP,包括snp的位置,与镇楼图30snp差不多,只是镇楼图剔除了snp位置)
20个snp (with snp position)

3. 看看数据组成

> ld.x[1:5,1:5] # 在R studio中输入是很直观的看到相关矩阵的,熟悉R studio的也可以看全局数据,像图红框中的那样,挨个熟悉一下:
           rs16852170  rs2281951  rs41305725  rs12410564 rs10864766
rs16852170 1.00000000 0.01510626 0.003112800 0.033929059 0.13868331
rs2281951  0.01510626 1.00000000 0.252247064 0.067013979 0.23682853
rs41305725 0.00311280 0.25224706 1.000000000 0.009190627 0.09477567
rs12410564 0.03392906 0.06701398 0.009190627 1.000000000 0.08785417
rs10864766 0.13868331 0.23682853 0.094775675 0.087854167 1.00000000
data是什么样子

4. 试试不同参数

# 多种参数自行多多尝试,挨个尝试可以看到不同的效果,画到同一张图时,背景颜色会被替换为白色,其余参数生效(如下图)
op <- par(mfrow = c(2, 2), # 2 x 2 pictures on one plot
          pty = "s")       # square plotting region,
# independent of device size
LD.plot( ld.x[1:10,1:10], snp.positions = x@snps$pos[1:10],
         graphical.par = list(par(0,0,0,0)), cex.ld = 0.3, cex.snp = 0.8,
        # cex.ld调整图中相关性数值字体大小,write.ld = NULL时此设置无效
        # cex.snp调整snp id的字体大小
         polygon.par = list(border = NA) )
LD.plot( ld.x[1:10,1:10], snp.positions = x@snps$pos[1:10],
         graphical.par = list(cex = 0.5, bg = "NA"), 
         # cex = 0.5各种字体大小设置为0.5
        # bg = "NA"不显示背景
         polygon.par = list(border = NA), write.ld = NULL )
LD.plot( ld.x[1:10,1:10], snp.positions = x@snps$pos[1:10],
         graphical.par = list(cex = 0.5, bg = "gray"),
        # bg = "gray"背景灰色
         polygon.par = list(border = "black"), write.ld = NULL )
LD.plot( ld.x[1:10,1:10],
        # 删除snp.positions,不显示染色体snp位置
         graphical.par = list(cex = 0.5, bg = "white"),
         # bg = "white"背景白色
         polygon.par = list(border = "gray"), write.ld = NULL )
## At end of plotting, reset to previous settings:
par(op)
不同参数

可以handeling了,转录组的数据计算出相关性赋予a,那么就可以LD.plot(a)来展示了!!!

上一篇 下一篇

猜你喜欢

热点阅读