前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >🤩 CMplot | 完美复刻Nature上的曼哈顿图(一)

🤩 CMplot | 完美复刻Nature上的曼哈顿图(一)

作者头像
生信漫卷
发布2022-10-31 17:05:27
1.5K0
发布2022-10-31 17:05:27
举报

1. 写在前面

原文地址:https://www.nature.com/articles/s41562-022-01359-x

今天要复刻一下Nature human behaviour上的一张Manhattan plot

曼哈顿图的名字来源是因为其形如曼哈顿的天际线, 高耸在较低高度的“建筑物”上方的摩天大楼的轮廓。主要用于GWAS结果的展示。

2. 用到的包

代码语言:javascript
复制
rm(list = ls())
library(CMplot)

3. 示例数据

代码语言:javascript
复制
data(pig60K)
data(cattle50K)


Note! 示例数据中的前三列分别是SNP的名称、染色体和位置, 其余各列是GWASp值或traitsGS/GP

有时候你可能只是想画SNP的密度图,这个时候前3列就够了。

4. GWAS结果展示

代码语言:javascript
复制
CMplot(pig60K,
       type="p",
       plot.type="m",
       LOG10=TRUE,
       threshold=NULL,
       file="jpg",
       memo="",
       dpi=300,
       file.output=F,
       verbose=F,
       width=14,height=6,
       chr.labels.angle=0)

这里需要说明一下plot.type可选的有:

"d"SNP density plot"c"circle-Manhattan plot"m"Manhattan plot"q"Q-Q plot"b"both circle-Manhattan, Manhattan and Q-Q plots

5. 修改细节

5.1 更改颜色
代码语言:javascript
复制
CMplot(pig60K,
       col = c("#3E0A52", "#423D77","#3F678B",
               "#468C8D", "#5FB47F", "#9FD55C","#F9E956"),
       type="p",
       plot.type="m",
       LOG10=TRUE,
       threshold=NULL,
       file="jpg",
       memo="",
       dpi=300,
       file.output=F,
       verbose=F,
       width=14,height=6,
       chr.labels.angle=0)

5.2 标注基因

我们在这里假设存在几个基因名gene1,gene2,gene3, gene4.... balabala......

代码语言:javascript
复制
SNPs <- pig60K[pig60K[,5] < (0.05 / nrow(pig60K)), 1]
genes <- paste("GENE", 1:length(SNPs), sep="_")

CMplot(pig60K[,c(1:3,5)],
       plot.type="m",
       LOG10=TRUE,
       col= c("#3E0A52", "#423D77","#3F678B",
               "#468C8D", "#5FB47F", "#9FD55C","#F9E956"),
       highlight = SNPs,
       highlight.col = NULL,
       highlight.cex = 1,
       highlight.pch = c(15:17), 
       highlight.text = genes,      
       highlight.text.col = "black",
       threshold = 0.05/nrow(pig60K),
       amplify = FALSE,
       file = "jpg",
       memo = "",
       dpi = 300,
       file.output = F,
       verbose = F,
       width = 14,height = 6)

5.3 更改阈值线的颜色和类型
代码语言:javascript
复制
CMplot(pig60K[,c(1:3,5)],
       plot.type="m",
       LOG10=TRUE,
       col= c("#3E0A52", "#423D77","#3F678B",
               "#468C8D", "#5FB47F", "#9FD55C","#F9E956"),
       highlight = SNPs,
       highlight.col = NULL,
       highlight.cex = 1,
       highlight.pch = c(15:17), 
       highlight.text = genes,      
       highlight.text.col = "black",
       threshold = 0.05/nrow(pig60K),
       threshold.lty = 2, 
       threshold.col = "black",
       threshold.lwd = 3,
       amplify = FALSE,
       file = "jpg",
       memo = "",
       dpi = 300,
       file.output = F,
       verbose = F,
       width = 14,height = 6)

6. 更进一步

这里我们再加上染色体的图,锦上添花!~🤩

代码语言:javascript
复制
CMplot(pig60K[,c(1:3,5)],
       plot.type="m",
       LOG10=TRUE,
       col= c("#3E0A52", "#423D77","#3F678B",
               "#468C8D", "#5FB47F", "#9FD55C","#F9E956"),
       chr.den.col=c("darkgreen", "yellow", "red"),
       highlight = SNPs,
       highlight.col = NULL,
       highlight.cex = 1,
       highlight.pch = c(15:17), 
       highlight.text = genes,      
       highlight.text.col = "black",
       threshold = 0.05/nrow(pig60K),
       threshold.lty = 2, 
       threshold.col = "black",
       threshold.lwd = 3,
       amplify = FALSE,
       file = "jpg",
       memo = "",
       dpi = 300,
       file.output = F,
       verbose = F,
       width = 14,height = 6)

牛奶最后祝大家早日不卷!~


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信漫卷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 写在前面
  • 2. 用到的包
  • 3. 示例数据
  • 4. GWAS结果展示
  • 5. 修改细节
    • 5.1 更改颜色
      • 5.2 标注基因
        • 5.3 更改阈值线的颜色和类型
        • 6. 更进一步
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档