1. CMplot包的安装及加载过程
通常使用Rstudio运行R更为便捷,每次使用前都需要加载R包
# CMplot在CRAN上可用,因此可以使用以下R代码安装它install.packages("CMplot")#如果已经安装,此行可忽略。library(CMplot)#加载包CMplot包
# if you want to use the latestversion on GitHub:source("https://raw.githubusercontent.com/YinLiLin/CMplot/master/R/CMplot.r")
在CMplot包里有两个例数据集合,可以通过一下R代码到处和查看详细信息:
data(pig60K) #calculated p-values by MLM
head(pig60K)
data(cattle50K) #calculated SNP effects by rrblup
head(cattle50K)
1.jpg
前三列分别为SNPs的名称、染色体、位置,后几列为GWAS中traits的p-value,traits的数量是无限的。
注意:****如果绘制SNP_Density,只需要前三列。
.查看常用参数:
?CMplot#需要在加载此包输入
在Rstudio的右下角会出现每个参数相应的解释,因此就不做过多赘述。
2.SNP密度图
#默认作图,包括SNP密度、环形曼哈顿图(无阈值线)、QQ图等
CMplot(pig60K)
#.绘制SNP density
CMplot(pig60K,
type="p",#绘制图形的类型,p——点(point),l-线(line),h——柱状图(vertical line)
plot.type="d",#d——绘制SNP密度图,d——SNP密度 c——环状(circle) m——曼哈顿图 q——QQ图 b——以上全部类型(both)
bin.size=1e6,#进行绘图的SNP总数
col=c("darkgreen", "yellow", "red"),#设置不同染色体中点的颜色, 要注意加引号。
file="jpg",# file设置输出图片的格式,可以设定为"jpg", "pdf", "tiff"
memo="",#memo 设置输出图片文件的名字
dpi=300, #dpi设置输出图片的分辨度
file.output=TRUE, #file.output设置是否输出图片
main="illumilla_60K",#备注图注标题
width=9,#宽度设置
heigh=6,#高度设置
verbose=TRUE) #verbose是否打印日志信息
image.png
3.曼哈顿图
3.1单性状曼哈顿图
第一类.绘制带阈值线并放大显著性 SNP位点的曼哈顿图
CMplot(pig60K,
plot.type = "m",
threshold =c(0.01,0.05)/nrow(pig60K),#阈值设定,Bonfferoni法校正=0.01/nrow(Pmap),通常以1/SNP总数为阈值。
threshold.col=c('grey','black'),#控制阈值线的颜色,注意要对应
threshold.lty = c(1,2),#阈值线的类型(7为实线,5为虚线)
threshold.lwd = c(1,1),#阈值线的宽度,也可以调整对角线的宽度,2最合适)
amplify = T,#放大显示~显著性的SNP点
signal.cex = c(1,1),#设置有效SNP位点的大小,建议选用2/3号为宜
signal.pch = c(20,20),#设置有效SNP位点的形状,16和19为圆形。
signal.col =c("red","orange"))#有效SNP位点的颜色
chr.den.col=c("darkgreen","yellow","red"))#【添加SNP密度】!!!,若不想添加只需要到前一步就可结束
具体图形参数如下图,可以根据自己需要选择相应的signal.pch。
image.png
附上单性状曼哈顿图绘图结果,是否添加SNP密度图可以自己选择。
image.png
image.png
第二类绘制曼哈顿图(无阈值线)
CMplot(pig60K,
plot.type="m",
LOG10=TRUE,
threshold=NULL,
chr.den.col=NULL,#chr.den.col=c("darkgreen","yellow","red")则会绘制SNP密度图
file="jpg",
memo="",dpi=300,
file.output=TRUE,
verbose=TRUE)
image.png
第三类绘制曼哈顿图(非显著性SNP位点为灰色)
CMplot(pig60K,
plot.type="m",
col=c("grey30","grey60"), #非显著性SNP位点为灰色状态
LOG10=TRUE,
ylim=c(2,12),#y轴范围在2~12之间
#向量或列表,CMplot只绘制这个区间内的点,
#ylim可以是向量或列表
#如果是列表,可以在y轴上用不同的范围分配不同的特征。
threshold=c(1e-6,1e-4),
threshold.lty=c(1,2),
threshold.lwd=c(1,1),
threshold.col=c("black","grey"),
amplify=TRUE,
chr.den.col=NULL,
signal.col=c("red","green"),
signal.cex=c(1,1),
signal.pch=c(19,19),
file="jpg",
memo="",
dpi=300,
file.output=TRUE,
verbose=TRUE)
image.png
3.2多性状曼哈顿图
CMplot(pig60K,
plot.type = "m",
threshold =c(0.01,0.05)/nrow(pig60K),
threshold.col=c('grey','black'),
threshold.lty = c(1,2),
threshold.lwd = c(2,2),
amplify = T,
multracks = T,#逻辑判断,为T时绘制多性状图,否则绘制单性状图
signal.cex = c(2,2),
signal.pch = c(16,19),
signal.col =c("red","orange"))
image.png
image.png
CMplot(pig60K,
plot.type="m",
multracks=TRUE,
threshold=c(1e-6,1e-4),
threshold.lty=c(1,2),
threshold.lwd=c(1,1),
threshold.col=c("black","grey"),
amplify=TRUE,
bin.size=1e6,
chr.den.col=c("darkgreen","yellow", "red"), #添加SNPs密度
signal.col=c("red","green"),
signal.cex=c(1,1),
file="jpg",
memo="",
dpi=300,
file.output=TRUE,
verbose=TRUE)
image.png
3.3环形曼哈顿图
绘制环形曼哈顿图
Type1.无染色体定义
CMplot(pig60K,
plot.type="c",#绘制环形图
r=0.5,#圆内半径,默认值为1
threshold=c(0.01,0.05)/nrow(pig60K),
cex =0.5, #环形曼哈顿图中点的大小,默认值为0.5
threshold.col = c("red","orange"),
threshold.lty = c(1,2),
amplify= T,
cir.chr.h = 2,#分界线的宽度
signal.cex = c(2,2),
signal.pch = c(19,20),
signal.col=c("red","green"),
outward=TRUE) #TRUE为从内向外绘制环形曼哈顿图,FLASE则是反之。
image.png
Type2. 对染色体进行定义
CMplot(pig60K,
plot.type="c",
chr.labels=[paste("Chr",c(1:19,"X"),sep=""), #染色体标记名称,paste()函数组合其中字符或向量,sep=""以空格分隔.
r=0.4,
cir.legend=TRUE,
outward=FALSE,#从外向内绘制环形曼哈顿图
cir.legend.col="black",#分界线(代表阈值的比例线)颜色
cir.chr.h=1.3,
chr.den.col="black",#代表染色体的框颜色
file="pdf",
memo="huan",
dpi=300,
file.output=TRUE,
verbose=TRUE)
image.png
Type3 加上SNP密度图。
CMplot(pig60K,
plot.type="c",
r=0.4,
col=c("grey30","grey60"),
chr.labels=paste("Chr",c(1:18,"X","Y"),sep=""),
threshold=c(1e-6,1e-4),
cir.chr.h=1.5,
amplify=TRUE,
threshold.lty=c(1,2),#选用了两个阈值需要两两对应设置
threshold.col=c("red","blue"),
signal.line=1 ,#显著性SNPs跨过圆的线条大小,
signal.col=c("red","green"),#SNP密度的颜色,
bin.size=1e6,#SNP密度图的大小
outward=FALSE,
file="jpg",
memo="",
dpi=300,
file.output=TRUE,
verbose=TRUE)
image.png
4. QQ图
4. 1 单性状QQ图
最简便的QQ图绘制。
CMplot(pig60K,
plot.type = "q",
threshold = 0.05)
CMplot(pig60K,
plot.type="q",
conf.int.col=NULL,#绘制QQ图中置信区间的颜色,可以用字符或向量
box=TRUE,#是否添加边框
file="jpg",
memo="",
dpi=300,
file.output=TRUE,
verbose=TRUE)
image.png
4. 2 多性状QQ图
1.置信区间有边框(建议选用)
CMplot(pig60K,
plot.type = "q",
multracks = T,
threshold = 0.05,
threshold.col ="orange",
amplify = T,
signal.cex = 1.5,
signal.pch = 20,
signal.col = "red")
threshold = 0.05,
threshold.col = "orange",
amplify = T,
signal.cex = 1.5,
signal.pch = 20,
signal.col = "red")
image.png
2 置信区间无边框
CMplot(pig60K,
plot.type="q",
col=c("dodgerblue1", "olivedrab3","darkgoldenrod1"),
threshold=1e6,
signal.pch=19,
signal.cex=1.5,
signal.col="red",
conf.int.col="grey",
box=FALSE,
multracks=TRUE,
file="jpg",
memo="",
dpi=300,
file.output=TRUE,
verbose=TRUE)
image.png
image.png