跟着高分SCI学画图:R语言绘制曼哈顿图

文摘   2024-09-24 17:47   德国  

跟着高分SCI学画图:R语言绘制曼哈顿图

曼哈顿图(Manhattan plot)是一种常用于基因组学研究的可视化工具,尤其是在全基因组关联分析(GWAS)中。这种图形通过展示每个遗传变异位点的统计显著性,帮助研究人员快速识别与目标性状(如疾病、药物反应等)相关的基因区域。

图1 常见的Manhattan plot

如何看懂一副曼哈顿图呢

图2 如何看懂一张曼哈顿图
  1. X轴(横轴):表示染色体的相对位置。通常在曼哈顿图中,所有染色体按照从1号到X号(或Y号)染色体的顺序排列。每个染色体内的SNP(单核苷酸多态性位点)根据其在基因组上的物理位置呈现。通过将所有染色体拼接在一起,X轴成为连续的基因组坐标轴,帮助研究者快速定位与目标性状相关的基因区域。
  2. 染色体内的每个点:代表一个SNP位点,即基因组上的变异位置。每个点的位置反映其在染色体上的具体位置,而点的纵向位置则代表其统计显著性(Y轴值)。SNP是基因组中最常见的遗传变异形式,通过其频率和分布,可以揭示个体或群体间的基因差异。
  3. Y轴(纵轴):通常表示SNP与研究性状关联的显著性水平,通过负对数转换的p值(-log10(p-value))进行展示。显著性越高的SNP点,其Y轴位置越高。例如,一个p值为1×10^-8的SNP,经过-log10转换后,Y轴上会显示8。通过这种方式,研究者可以快速识别显著的基因变异。p值小意味着该SNP与研究性状(如某种疾病)关联的可能性越大
  4. 显著性阈值:在曼哈顿图中通常设定一条或多条显著性阈值线。最常用的阈值是p = 5 × 10^-8,这是在全基因组关联分析(GWAS)中常用的阈值,用于减少假阳性结果。超过这条线的SNP通常被认为是与目标性状显著相关的基因变异点,往往是研究的重点。显著性阈值的选择需要考虑多个因素,如样本大小、测试次数以及研究的具体背景。
  5. 染色体分段:为了帮助区分不同染色体,曼哈顿图通常采用交替颜色显示不同染色体的SNP。这样的配色方案使得图表更为清晰易读,尤其在高密度的SNP数据中,可以直观地看到哪些染色体区域可能与目标性状高度相关。这种图表结构类似曼哈顿的摩天大楼,因此得名“曼哈顿图”。
图3 常见的Manhattan plot
图4 曼哈顿夜景
  1. p值与效应大小:虽然曼哈顿图显示的是显著性水平(-log10(p-value)),但这并不直接反映SNP的效应大小。因此,高显著性不一定意味着该SNP对目标性状有很大的影响,可能只是由于样本量大或其他因素导致。通常研究者还需要结合效应大小估计(如beta值)和其他验证实验进一步确认结果的生物学意义。
  2. 基因组宽显著性校正:由于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 基础曼哈顿图

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 底部加上SNP密度图的曼哈顿图

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 Multi-track曼哈顿图

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)


图8 环形曼哈顿图

总结

曼哈顿图在基因组学研究中是一种强大的可视化工具,尤其是在GWAS研究中,帮助研究人员直观识别基因位点的显著性关联。通过使用R语言和CMplot包,我们可以轻松创建多种类型的曼哈顿图,从基础的平面图到带有SNP密度的复杂图,甚至是环形曼哈顿图。这些图表不仅在学术发表中具有重要作用,还能为科研工作者提供清晰的数据展示形式,快速突出基因组数据中的关键信号。

快来尝试制作你自己的曼哈顿图吧,让你的研究成果更具说服力!

本文作者:杨硕龄


现在:


长按扫码关注:科研生信充电宝


10元赞赏本文,即喜欢作者~


即可直接解锁:


《跟着高分SCI学画图:R语言绘制曼哈顿图》对应资源哦~


看到这里你还不心动吗?


赶紧关注、转发、点赞、分享,领取你的专属福利吧~



好啦,以上就是今天推文的全部内容啦!


版权声明:本文内容由互联网用户自发贡献,版权归作者所有,本公众号不拥有所有权,也不承担相关法律责任。

如果您发现本公众号中有涉嫌抄袭的内容,欢迎发送邮件至:kysxcdb@163.com 进行举报,一经查实,本公众号将立刻删除涉嫌侵权内容。



科研生信充电宝
介绍科研;介绍统计;介绍生信;
 最新文章