CMplot是一个专门绘制曼哈顿图的R包
rm(list=ls())
options(stringsAsFactors = F)
#下载安装
install.packages("CMplot")
library(CMplot)
#包里面带的演示数据
data(pig60K)
head(pig60K)
可以看到输入文件的必要信息有snp名,染色体名,位置,以及P值
pig60K=pig60K[pig60K$Chromosome!='Y',]
#snp密度图
CMplot(pig60K,plot.type="d",bin.size=1e6,chr.den.col=c("skyblue", "grey", "red"),file="pdf",memo="",dpi=300,
file.output=TRUE)
#"d"代表密度图,不同字母代表绘制不同的图
#bin.size=1e6,每1MB检测一次
#bin.range设置密度大小的范围
#更多的参数我放在文章末尾
#环形曼哈顿图
CMplot(pig60K,plot.type="c",chr.labels=paste0("Chr",c(1:18,"X")),
r=0.4,cir.legend=TRUE,outward=FALSE,cir.legend.col="black",
cir.chr.h=1.3,chr.den.col=c("darkgreen","yellow","red"),file="pdf",memo="",dpi=300,
file.output=TRUE,verbose=TRUE)
CMplot(pig60K[,1:4], plot.type="m", LOG10=TRUE, ylim=NULL, threshold=c(1e-6,1e-4),
threshold.lty=c(1,2),threshold.lwd=c(1,1),
threshold.col=c("black","grey"), amplify=F,
bin.size=1e6,chr.den.col=c("darkgreen", "yellow","red"),
signal.col=c("red","green"),signal.cex=c(1,1),
signal.pch=c(19,19),
highlight = c('MARC0066784','MARC0040492'),highlight.col = 'black',
highlight.cex = 1,highlight.text=c('MARC0066784','MARC0040492'),
file="jpg",memo="",dpi=300,
file.output=TRUE,verbose=TRUE)
#threshold设置阈值,如4和6(log以后的)
#signal设置超过阈值的点,如绿色和红色的点
#highlight个性化某些点,如图中的两个黑色的点
#highlight.text为某些点添加标签
需要注意的是在绘制曼哈顿图时不一定非要P值,也可以使用其他数值,如fst,pi等,这时候我们需要把LOG10=F,设置合理的y轴范围就好。SNP的名称如果未知我们可以通过简单的paste0(‘SNP’,1:nrow(data))按照顺序设置,SNP的名称主要是用在highlight中,指定SNP名称定义我们想要个性化显示的点。
一些基本参数
Pmap 输入数据文件
col 设置不同染色体中点的颜色
cex 设置点的大小
pch 设置点的形状
band 设置不同染色体之间的间隔
ylim 设置y轴的范围
bin.size 设置SNP密度图中的窗口大小
bin.range 设置SNP密度图中图例的范围min,max
chr.den.col 设置SNP密度的颜色
cex.axis 设置坐标轴字体的大小
cex.axis 设置坐标轴label字体大小
lwd.axis 设置坐标轴线的宽度
plot.type 设置不同的绘图类型,可以设定为 "d", "c", "m", "q" or "b"
d是snp密度图,c是环形曼哈顿图,m是普通曼哈顿图
multracks 设置是否需要绘制多个track
mar 设置图周围白色间隙的大小,应提供4个值,表示底部,左侧,上,右的方向。
box 是否在曼哈顿图周围加框
xlab 设置x轴标签
xticks.pos 设置x刻度标签和x轴之间的距离。
ylab 设置y轴标签
ylab.pos 设置y轴label距离轴的距离
outward 设置点的朝向是否向外
threshold 设置阈值并添加阈值线,可以为多个,如threshold=c(1,2)
threshold.col 设置阈值线的颜色,可以设置多个,如threshold.col=c('red','black')
threshold.lwd 设置阈值线的宽度,如 threshold.lwd=c(1,2)
threshold.lty 设置阈值线的类型,如 threshold.lty=c(1,2)
amplify 设置是否放大显著的点
signal.cex 设置显著点的大小
signal.pch 设置显著点的形状,可以设置多个,如signal.pch=c(19,19)
signal.col 设置显著点的颜色
highlight 设置高光点,如highlight='snp123'
highlight.cex 设置高光点的大小
highlight.pch 设置高光点的形状
highlight.type 设置高光点的类型
highlight.col 设置高光点的颜色
highlight.text 设置高光点的文本
highlight.text.col 设置高光点的文本的颜色
highlight.text.cex 设置高光点的文本的大小
highlight.text.xadj设置高光点的文本的水平位置,-1(左)、0(中心)、1(右)
highlight.text.yadj设置高光点的文本的垂直位置,-1(下)、0(中心)、1(上)
highlight.text.font设置高光点的文本的字体
环状曼哈顿
r 设置圈的半径大小
chr.labels 设置染色体的标签(密度图和圆曼哈顿图)
chr.labels.angle设置染色体的标签的角度(密度图和圆曼哈顿图)
chr.den.col 设置SNP密度图的颜色
cir.band 设置环状曼哈度图中不同染色体之间的间隔
cir.chr 设置是否显示染色体的边界
cir.chr.h 设置染色体边界的高度
cir.legend 设置是否显示图例
cir.legend.cex 设置图例字体的大小
cir.legend.col 设置图例的颜色
H 设置每个圈的高度
LOG10 设置是否对p-value取log10对数
conf.int.col 设置QQ图中置信区间的颜色
file.output 设置是否输出图片
file 设置输出图片的格式,可以设定为"jpg", "pdf", "tiff"
dpi 设置输出图片的分辨度
memo 设置输出图片文件的名字
height 高
width 宽
file 输出文件类型
file.output 是否输出文件
main 标题
main.cex 标题大小
main.font 标题字体
参考:https://cloud.tencent.com/developer/article/1481862
https://www.jianshu.com/p/1edc44fe922f