跟着高分SCI学画图:R语言绘制曼哈顿图
曼哈顿图(Manhattan plot)
是一种常用于基因组学研究的可视化工具,尤其是在全基因组关联分析(GWAS)
中。这种图形通过展示每个遗传变异位点的统计显著性,帮助研究人员快速识别与目标性状(如疾病、药物反应等)相关的基因区域。
如何看懂一副曼哈顿图呢
X轴(横轴):表示染色体的相对位置。通常在曼哈顿图中,所有染色体按照从1号到X号(或Y号)染色体的顺序排列。每个染色体内的SNP(单核苷酸多态性位点)根据其在基因组上的物理位置呈现。通过将所有染色体拼接在一起,X轴成为连续的基因组坐标轴,帮助研究者快速定位与目标性状相关的基因区域。 染色体内的每个点:代表一个SNP位点,即基因组上的变异位置。每个点的位置反映其在染色体上的具体位置,而点的纵向位置则代表其统计显著性(Y轴值)。SNP是基因组中最常见的遗传变异形式,通过其频率和分布,可以揭示个体或群体间的基因差异。 Y轴(纵轴):通常表示SNP与研究性状关联的显著性水平,通过负对数转换的p值(-log10(p-value))进行展示。显著性越高的SNP点,其Y轴位置越高。例如,一个p值为1×10^-8的SNP,经过-log10转换后,Y轴上会显示8。通过这种方式,研究者可以快速识别显著的基因变异。p值小意味着该SNP与研究性状(如某种疾病)关联的可能性越大。 显著性阈值:在曼哈顿图中通常设定一条或多条显著性阈值线。最常用的阈值是p = 5 × 10^-8,这是在全基因组关联分析(GWAS)中常用的阈值,用于减少假阳性结果。超过这条线的SNP通常被认为是与目标性状显著相关的基因变异点,往往是研究的重点。显著性阈值的选择需要考虑多个因素,如样本大小、测试次数以及研究的具体背景。 染色体分段:为了帮助区分不同染色体,曼哈顿图通常采用交替颜色显示不同染色体的SNP。这样的配色方案使得图表更为清晰易读,尤其在高密度的SNP数据中,可以直观地看到哪些染色体区域可能与目标性状高度相关。这种图表结构类似曼哈顿的摩天大楼,因此得名“曼哈顿图”。
p值与效应大小:虽然曼哈顿图显示的是显著性水平(-log10(p-value)),但这并不直接反映SNP的效应大小。因此,高显著性不一定意味着该SNP对目标性状有很大的影响,可能只是由于样本量大或其他因素导致。通常研究者还需要结合效应大小估计(如beta值)和其他验证实验进一步确认结果的生物学意义。 基因组宽显著性校正:由于GWAS分析涉及大量的SNP(通常超过百万),需要进行多重检验校正以控制假阳性率。因此,p = 5 × 10^-8通常是全基因组显著性的标准阈值,用于考虑多重检验的影响(Bonferroni校正)。
接下来我们正式进入绘图部分吧!
你好!曼哈顿图
1. 加载模拟数据
set.seed(123) # 保证可重复性
SNP <- paste0("SNP", 1:1000)
Chromosome <- sample(1:10, 1000, replace=TRUE)
Position <- sample(1:1000000, 1000)
trait1 <- runif(1000, min=0, max=1)
trait2 <- runif(1000, min=0, max=1)
trait3 <- runif(1000, min=0, max=1)
pig60K <- data.frame(SNP, Chromosome, Position, trait1, trait2, trait3)
2. 加载 CMplot 包
if (!require(CMplot)) {
install.packages("CMplot")
library(CMplot)
}
3. 设置工作目录为你想要的路径
setwd("D:/砺行致远每日打卡/杨硕龄+曼哈顿图+9月20日") # 修改为你想要的路径
4. 绘制基础的曼哈顿图
CMplot(pig60K,
plot.type="m", # 绘制曼哈顿图
LOG10=TRUE, # p值取-log10
threshold=c(1e-6, 1e-4), # 设置阈值并添加阈值线
threshold.lty=c(1, 2), # 设置阈值线的线型
threshold.lwd=c(1, 1), # 设置阈值线的粗细
threshold.col=c("black", "grey"), # 设置阈值线的颜色
amplify=TRUE, # 是否放大显著的点
signal.col=c("red", "green"), # 设置显著点的颜色
signal.cex=c(1, 1), # 设置显著点的大小
signal.pch=c(19, 19), # 显著点的形状
file.output=TRUE, # 是否输出图片
file="jpg", # 输出图片格式为 jpg
dpi=300, # 分辨率为 300 DPI
verbose=TRUE, # 是否输出 log 信息
ylim=NULL # Y轴范围自动调整
)
5. 在曼哈顿图底部加上SNP密度图
CMplot(pig60K, # 数据
plot.type="m", # type="m",绘制曼哈顿图
LOG10=TRUE, # p值取-log10
threshold=c(1e-6, 1e-4), # 设置阈值并添加阈值线
# 设置阈值线的线型、粗细和颜色:
threshold.lty=c(1, 2),
threshold.lwd=c(1, 1),
threshold.col=c("black", "grey"),
amplify=TRUE, # 是否放大显著的点
signal.col=c("red", "green"), # 设置显著点的颜色
signal.cex=c(1, 1), # 显著点的大小
signal.pch=c(19, 19), # 显著点的形状
# 添加SNP密度图的相关参数
bin.size=1e6, # SNP密度图的窗口大小
chr.den.col=c("darkgreen", "white", "red"), # 设置SNP密度图的颜色
file.output=TRUE, # 是否输出图片
file="jpg", # 输出图片格式(pdf、jpg或tiff)
dpi=300, # 分辨率
verbose=TRUE, # 是否输出log信息
ylim=NULL # 可以设置y轴显示范围
)
6. Multi-track 曼哈顿图
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, # SNP密度图窗口大小
chr.den.col=c("darkgreen", "white", "red"), # SNP密度图的颜色
signal.col=c("red", "green"), # 显著点的颜色
signal.cex=c(1, 1), # 显著点的大小
file="jpg", # 输出文件格式为 jpg
dpi=300, # 分辨率为 300 DPI
file.output=TRUE, # 是否输出图片
verbose=TRUE # 是否输出 log 信息
)
7. 环形曼哈顿图
检查数据集染色体编号
chromosomes <- unique(pig60K$Chromosome) # 获取数据集中实际的染色体数量
替换 chr.labels 为根据数据集自动生成的染色体标签
CMplot(pig60K,
plot.type="c", # 环形曼哈顿图
chr.labels=paste("Chr", chromosomes, sep=""), # 根据实际染色体数量生成标签
r=0.4, # 圆形半径
outward=FALSE, # 点的朝向是否向外
cir.chr.h=1.3, # 染色体边界的高度
chr.den.col="black", # 染色体密度图的颜色
file="jpg", # 输出图片格式为 jpg
dpi=300, # 图片分辨率
file.output=TRUE, # 输出图片
verbose=TRUE # 输出日志信息
)
添加显著性线,及修改显著点的特征
CMplot(pig60K,
plot.type="c", # 关键参数:c表示绘制环形曼哈顿图
chr.labels=paste("Chr",c(1:18,"X","Y"),sep=""), # 染色体名称
r=0.4, # 圆形半径
cir.legend=TRUE, # 图例
threshold=c(1e-6,1e-4),
amplify=TRUE,
# 设置显著的点特征:
threshold.lty=c(1,2),
threshold.col=c("red","blue"),
signal.line=1,signal.col=c("red","green"),
# 添加SNP密度图
chr.den.col=c("darkgreen","yellow","red"),
bin.size=1e6,
outward=FALSE, # 点的朝向是否向外
cir.legend.col="black", # 图例颜色
cir.chr.h=1.5, # 染色体边界的高度
file="jpg",
memo="circle_2",
dpi=300,
file.output=TRUE,
verbose=TRUE)
总结
曼哈顿图
在基因组学研究中是一种强大的可视化工具,尤其是在GWAS
研究中,帮助研究人员直观识别基因位点的显著性关联。通过使用R语言和CMplot
包,我们可以轻松创建多种类型的曼哈顿图,从基础的平面图到带有SNP密度的复杂图,甚至是环形曼哈顿图。这些图表不仅在学术发表中具有重要作用,还能为科研工作者提供清晰的数据展示形式,快速突出基因组数据中的关键信号。
快来尝试制作你自己的曼哈顿图吧,让你的研究成果更具说服力!
本文作者:杨硕龄
现在:
长按扫码关注:科研生信充电宝
10元赞赏本文,即喜欢作者~
即可直接解锁:
《跟着高分SCI学画图:R语言绘制曼哈顿图》对应资源哦~
看到这里你还不心动吗?
赶紧关注、转发、点赞、分享,领取你的专属福利吧~
好啦,以上就是今天推文的全部内容啦!
版权声明:本文内容由互联网用户自发贡献,版权归作者所有,本公众号不拥有所有权,也不承担相关法律责任。
如果您发现本公众号中有涉嫌抄袭的内容,欢迎发送邮件至:kysxcdb@163.com 进行举报,一经查实,本公众号将立刻删除涉嫌侵权内容。