今天学习了一下怎么画Manhattan图和qq图,其实如果你有了关联分析的结果,画图非常简单,用R语言里面的qqman。帮助文档给予了非常详细的说明,我们拿自己的数据画图,改改参数就可以,非常简单。下面是对文档的翻译学习。
准备
install.packages("qqman") # 安装qqman包
library(qqman) #加载qqman
vignette("qqman") #查看帮助文档
qman包含了一个GWAS结果的数据集,可以用来创建曼哈顿图和q-q图。数据gwasResults数据中包含了22条染色体上的16,470个snp。
View(gwasResults)#查看实例数据
1 首先可以看看gwasResults里面都有啥
数据里面含有4列,分别是:
SNP名称;染色体名称;SNP的物理位置;GWAS关联的p值。所以,如果你有自己的数据,需要改成这样的格式,才能画曼哈顿图,不然会报错,一定要注意,列的名字都是大写字母。
2 画Manhattan图,很简单,只要一个命令
manhattan(gwasResults)
3 自定义修改参数
manhattan(gwasResults, main = "Manhattan Plot", ylim = c(0, 10), cex = 0.6, cex.axis = 0.9, col = c("blue4", "orange3"), suggestiveline = F, genomewideline = F, chrlabs = c(1:20, "P", "Q"))
#main 标题名
#ylim 纵轴标尺
#cex = 0.6 点的大小减小到60%
#cex.axis= 0.9 将坐标轴的字体减小到90%
#col是改变点的颜色
#suggestiveline = F 不设置阈值线段
#genomewideline = F 啥意思没搞清
3chrlabs = c(1:20, "P", "Q")给染色体指定名字
4 指定某一条染色体画Manhattan
manhattan(subset(gwasResults, CHR == 1))
5 高亮感兴趣的SNP,前提是你把感兴趣的SNP名字单独存为一个dataframe
View(snpsOfInterest)#这个dataframe是你感兴趣的SNP名字
manhattan(gwasResults, highlight = snpsOfInterest)
6 局部Manhattan图和高亮SNP
manhattan(subset(gwasResults, CHR == 3), highlight = snpsOfInterest, xlim = c(200, 500), main = "Chr 3")
7 图中显示SNP的P值
manhattan(gwasResults, annotatePval = 0.01)
#每条染色体上p值超过0.01的SNP的会被标注出p值
8 也可以注释所有的超过指定阈值的SNP
manhattan(gwasResults, annotatePval = 0.005, annotateTop = FALSE)
9 画qq图
qq(gwasResults$P)
10 qq图加参数
qq(gwasResults$P, main = "Q-Q plot of GWAS p-values", xlim = c(0, 7), ylim = c(0,12), pch = 18, col = "blue4", cex = 1.5, las = 1)
以上纯粹是对qqman包的文档翻译。