曼哈顿图--R可视化

曼哈顿图(Manhattan plot)是一种GWAS分析中常用的展示基因组数据的散点图。可以R语言中的qqman、CMplot及ggplot2三个包绘制曼哈顿图。

基于qqman包绘制

1、安装、加载R包

安装包
#install.package("qqman")
#加载包
library(qqman)

2、数据

#加载数据——以qqman包自带示例数据gwasresult数据为例
df1 <- gwasResults     #数据中SNP为SNP名称,CHR为染色体编号,BP为碱基位置,P为p值
head(df1)              #预览数据
image.png

3、绘图

manhattan(df1,    #绘图数据
          col = c('#30A9DE','#EFDC05','#E53A40','#090707'),    #交替使用颜色展示
          suggestiveline = -log10(1e-05),     #-log10(1e-5)处添加"suggestive"横线
          genomewideline = -log10(5e-10),     #-log10(5e-10)处添加"genome-wide sigificant"横线
          highlight = snpsOfInterest,     #内置高亮的snp数据, 也可以对snpOfInterest进行设置
          annotatePval = 0.05,      #标记p值小于0.05的点
          annotateTop = T,          #如果为T,则仅批注低于注解阈值的每个染色体上的顶部点,为F则标记所有小于注解阈值的点。
          main = "XXXXXXXX"       #标题
          )
image.png

基于CMplot包绘制

1、安装、加载包

#安装包
#install.package("CMplot")
#加载包
library(CMplot)

2、数据

#加载数据——以CMplot包自带示例数据pig60k数据为例
data(pig60K)        #预览数据
image.png

3、绘图

#在工作目录下会生成一系列图
CMplot(pig60K,       #示例数据
       chr.den.col=c("black","green","red"),        #SNP密度展示
       file="jpg",        #绘制图片类型
       memo="",        #输出文件名中添加一个字符
       dpi = 600)        #绘制图片的分辨率
CMplot(Pmap,
       col=c("#4197d8", "#f8c120", "#413496", "#495226",
             "#d60b6f", "#e66519", "#d581b7", "#83d3ad", "#7c162c", "#26755d"),
       bin.size=1e6, bin.range=NULL, bin.legend.num=10, pch=19, type="p",
       band=1, H=1.5, ylim=NULL, cex.axis=1, lwd.axis=1.5, cex.lab=1.5,
       plot.type="b", multracks=FALSE, points.alpha=100L, cex=c(0.5,1,1),
       r=0.3, outward=FALSE, ylab=expression(-log[10](italic(p))),
       ylab.pos=3, xticks.pos=1, mar = c(3,6,3,3), threshold = NULL,
       threshold.col="red", threshold.lwd=1, threshold.lty=2,
       amplify= TRUE, signal.cex = 1.5, signal.pch = 19,
       signal.col=NULL, signal.line=2, highlight=NULL, highlight.cex=1,
       highlight.pch=19, highlight.type="p", highlight.col="red",
       highlight.text=NULL, highlight.text.col="black", highlight.text.cex=1,
       highlight.text.xadj=NULL, highlight.text.yadj=NULL,
       highlight.text.font=3, chr.labels=NULL, chr.border=FALSE,
       chr.labels.angle=0, chr.den.col="black", chr.pos.max=FALSE, cir.band=1,
       cir.chr=TRUE, cir.chr.h=1.5, cir.legend=TRUE, cir.legend.cex=0.6,
       cir.legend.col="black", LOG10=TRUE, box=FALSE, conf.int=TRUE,
       conf.int.col=NULL, file.output=TRUE, file=c("jpg","pdf","tiff"),
       dpi=300, height=NULL, width=NULL, memo="", main="", main.cex=1.5,
       main.font=2, trait.legend.ncol=NULL, verbose=TRUE)
image.png
image.png
image.png
image.png

image.png

image.png

image.png

image.png

基于ggplot2包进行绘制

1、安装、加载包

#安装包
# install.packages("ggplot2")
# install.packages("tidyverse")
# install.packages("ggforce")
# install.packages("ggprism")
#加载包
library(ggplot2)
library(tidyverse)
library(ggforce)
library(ggprism)

2、数据及其处理

#数据,同样以qqman包自带数据gwasresult为例
df <- gwasResults
###数据处理
df %>%
  group_by(CHR) %>%
  summarise(df_chr_len=max(BP)) %>%      #计算染色体长度
  mutate(total = cumsum(df_chr_len) - df_chr_len) %>%
  select(-df_chr_len) %>%        #计算染色体初始位置
  left_join(df, ., by="CHR") %>%
  arrange(CHR, BP) %>%
  mutate( BPcum = BP + total)->df_SNP_position       #计算累计SNP的位置

head(df_SNP_position)        #预览数据
image.png

3、绘图

#X轴标签位置
X_axis <-  df_SNP_position %>% group_by(CHR) %>% summarize(center=( max(BPcum) +min(BPcum) ) / 2 )     
#添加高亮和注释信息:snpsOfInterest中的rs编号和P值大于10的点
data <- df_SNP_position %>%
  mutate( is_highlight=ifelse(SNP %in% snpsOfInterest, "yes", "no")) %>%
  mutate( is_annotate=ifelse(-log10(P)>10, "yes", "no"))
#绘图
ggplot(data, aes(x=BPcum, y=-log10(P))) +
  geom_point(aes(color=as.factor(CHR)),alpha=0.8, size=1.5)+
  scale_color_manual(values = rep(c('#30A9DE','#EFDC05','#E53A40','#090707'), 22 ))+#颜色设置
  scale_x_continuous(label = X_axis$CHR, breaks= X_axis$center)+#设定X轴
  scale_y_continuous(expand = c(0, 0) ) +#去除绘图区和X轴之间的gap
  geom_hline(yintercept = c(6, -log10(0.05/nrow(df_SNP_position))), #添加阈值线
             color = c('green', 'red'),size = 1.2,
             linetype = c("dotted", "twodash")) +
  geom_point(data=subset(data, is_highlight=="yes"), color="green",
             size=2)+facet_zoom(x = BPcum >= 3000 & BPcum <=3500)+#展示某一区域的p值情况
  theme_prism(palette = "flames",#使用ggprism包自带主题
              base_fontface = "plain",
              base_family = "serif",
              base_size = 16,
              base_line_size = 0.8,
              axis_text_angle = 45)+
  theme(legend.position = "none",#去除图例
        panel.grid = element_blank(),
        panel.border = element_blank(),
        axis.line.x = element_line(),
        axis.line.y = element_line())
image.png

参考:

1)https://blog.csdn.net/ddxygq/article/details/103555955

2)https://mp.weixin.qq.com/s/IO5rqz8sXaYD5vc5EbkkPw

  1. https://www.bilibili.com/read/cv17793942/
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351

推荐阅读更多精彩内容