百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

R语言学习笔记(五)——曼哈顿图

bigegpt 2024-09-17 12:32 3 浏览

导 语

全基因组关联分析(Genome-wide association study)是生物领域挖掘功能基因的常用方法。GWAS的最重要的结果展示就是曼哈顿图,本期给大家介绍两个画曼哈顿图的R包qqman和CMplot,并对二者做一个简单小结。

01GWAS简介

全基因组关联分析最早是在人类疾病研究中被应用,随后在动物和植物研究中也大放异彩。从2005年第一篇GWAS研究开始到现在已经16年了,很多重要的基因都已经被挖掘出来了,但值得注意的是每年仍然有不少高水平的GWAS相关文章。尤其是近年来转录组、蛋白组、代谢组等多组学的兴起,可能会大大扩展GWAS的研究边界,让GWAS焕发出第二春。

关于GWAS具体的分析流程网上的资料很多,在这里不做更多的介绍。这里只介绍GWAS的结果展示方式,即曼哈顿图和qq图。其中曼哈顿图显示所有SNP位点的p-value,可以理解为每个SNP与表型的关联程度;qq图的纵轴是SNP位点的p-value值,横轴是则是均匀分布的p-value值,显示了每个SNP位点p-value实际值与理论值(假设SNP与表型不相关)的差异。

02qqman

这个包的用法比较简单,这里用包中自带的示例文件gwasResults展示

> install.packages("qqman")
> library(qqman)           #加载qqman包
> library(RColorBrewer)    #用于颜色变化
> str(gwasResults)
> head(gwasResults)
SNP CHR BP         P
1 rs1   1  1 0.9148060
2 rs2   1  2 0.9370754
3 rs3   1  3 0.2861395
4 rs4   1  4 0.8304476
5 rs5   1  5 0.6417455
6 rs6   1  6 0.5190959

可以看到数据一共4列,分别是SNP标记的名称、染色体、染色体位置、P值。我们先不调参数画个最简单的曼哈顿图

> manhattan(gwasResults)

从曼哈顿图可以看到只有3号染色体上有一个很高的峰,这几乎是最理想的GWAS结果。

同样,我们画出相应的qq图:

> qq(gwasResults$P)    #qq图只需要一列p值的数据

这种翘尾巴的形式也是最理想的qq图结果,可以看到从横坐标大于2开始,GWAS结果的p值与均匀分布的p值就有了明显的差距,说明表型和基因型之间确实存在显著的相关关系。

最后看一下曼哈顿图的相关参数

manhattan(x, chr = "CHR", bp = "BP", p = "P", snp = "SNP",
col = c("gray10", "gray60"), chrlabs = NULL,
suggestiveline = -log10(1e-05), genomewideline = -log10(5e-08),
highlight = NULL, logp = TRUE, annotatePval = NULL,
annotateTop = TRUE, ...)

这里只介绍几个常用的参数,col是调整颜色,suggestiveline是p的阈值,genomewideline是第二条阈值线,highlight是标记某个或某些SNP。

> manhattan(gwasResults,col = c("red", "blue"),annotatePval = 0.0001)


03CMplot

这个包实际上只有一个函数CMplot,但集成了SNP密度图、曼哈顿图和qq图多种图形的画法。这个函数的参数有很多,这里列举一些常用的参数。

CMplot(Pmap, col=c("#377EB8", "#4DAF4A", "#984EA3", "#FF7F00"),
bin.size=1e6, bin.max=NULL, pch=19, band=1, cir.band=0.5, H=1.5,
ylim=NULL, cex.axis=1, plot.type="b", multracks=FALSE, cex=c(0.5,1,1),
r=0.3, xlab="Chromosome", ylab=expression(-log[10](italic(p))), xaxs="i",
yaxs="r", outward=FALSE, threshold = NULL, threshold.col="red",
threshold.lwd=1, threshold.lty=2, amplify= TRUE, chr.labels=NULL,
signal.cex = 1.5, signal.pch = 19, signal.col="red", signal.line=1,
cir.chr=TRUE, cir.chr.h=1.5, chr.den.col=c("darkgreen", "yellow", "red")
, cir.legend=TRUE, cir.legend.cex=0.6, cir.legend.col="black",
LOG10=TRUE, box=FALSE, conf.int.col="grey", file.output=TRUE,
file="jpg", dpi=300, memo="")

col 设置颜色cex/pch 设置点的大小/形状

bin.size 设置SNP密度图中的窗口大小

cex.axis 设置坐标轴字体和标签字体的大小

plot.type 设置不同的绘图类型,可以设定为 "d", "c", "m", "q" or "b",其中d是SNP密度图,c是环形曼哈顿图,m是曼哈顿图,q是qq图,b是同时画环形曼哈顿图、曼哈顿图和qq图。

threshold/ threshold.col/ threshold.lwd/ threshold.lty 设置阈值并添加阈值线/阈值线的颜色/宽度/类型

signal.cex/signal.pch/signal.col 设置显著点的大小/性状/颜色

cir.legend/cir.legend.cex/cir.legend.col 设置是否显示图例/图例字体大小/图例颜色

3.1 SNP密度图

> #install.packages(CMplot)
> library(CMplot)
> data = pig60K
> head(data)
          SNP Chromosome Position    trait1     trait2     trait3
1 ALGA0000009          1    52297 0.7738187 0.51194318 0.51194318
2 ALGA0000014          1    79763 0.7738187 0.51194318 0.51194318
3 ALGA0000021          1   209568 0.7583016 0.98405289 0.98405289
4 ALGA0000022          1   292758 0.7200305 0.48887140 0.48887140
5 ALGA0000046          1   747831 0.9736840 0.22096836 0.22096836
6 ALGA0000047          1   761957 0.9174565 0.05753712 0.05753712

可以看到示例数据pig60K有6列,前3列是SNP信息,后三列是表型数据。我们自己用CMplot包作图时,可直接保留列名,将数据替换成自己的数据即可。

> CMplot(pig60K,plot.type = "d",bin.size = 1e5, col = c("blue","red","yellow"), file.output = F)

3.2 曼哈顿图

单性状曼哈顿图

> CMplot(pig60K,plot.type = "m", threshold = c(0.01,0.05)/nrow(pig60K), amplify = T, signal.cex = c(1,1), signal.pch = c(20,20), signal.col = c("red","blue"), multracks = F, file.output = F)

上面的图片是trait1的曼哈顿图,若绘制多性状曼哈顿图则是这样的:

> CMplot(pig60K,plot.type = "m", threshold = c(0.01,0.05)/nrow(pig60K), amplify = T, signal.cex = c(1,1), signal.pch = c(20,20), signal.col = c("red","blue"), multracks = F, file.output = F)

可以看到由于不同的信号叠加到一起显得非常拥挤,所以常规的曼哈顿图不适合展示多性状的GWAS结果。那用什么展示呢,环形曼哈顿图!

环形曼哈顿图

> CMplot(pig60K,plot.type="c",r=0.5,threshold=c(1e6, 1e6),cex = 1, 
threshold.col = c("red","blue"),cir.chr.h = 2,
signal.cex = c(2,2), signal.col=c("red","green"),file.output = F)

可以看到环形的曼哈顿图能够同时显示3个性状的GWAS结果。

3.4 qq图

qq图的做法比较简单,一般只需要把作图类型改成q,设置阈值,调整一下字体大小即可。

> CMplot(pig60K,plot.type = "q",threshold = 0.05)

04小 结

本期给大家介绍了用于展示GWAS结果曼哈顿图和qq图的R包qqman和CMplot,其中qqman的用法比较简单,功能也相对单一。而CMplot除了曼哈顿图和qq图,还能够画SNP密度图,并且能够用环形曼哈顿图同时展示多个GWAS结果,推荐大家使用!

相关推荐

方差分析简介(方差分析通俗理解)

介绍方差分析(ANOVA,AnalysisofVariance)是一种广泛使用的统计方法,用于比较两个或多个组之间的均值。单因素方差分析是方差分析的一种变体,旨在检测三个或更多分类组的均值是否存在...

正如404页面所预示,猴子正成为断网元凶--吧嗒吧嗒真好吃

吧嗒吧嗒,绘图:MakiNaro你可以通过加热、冰冻、水淹、模塑、甚至压溃压力来使网络光缆硬化。但用猴子显然是不行的。光缆那新挤压成型的塑料外皮太尼玛诱人了,无法阻挡一场试吃盛宴的举行。印度政府正...

Python数据可视化:箱线图多种库画法

概念箱线图通过数据的四分位数来展示数据的分布情况。例如:数据的中心位置,数据间的离散程度,是否有异常值等。把数据从小到大进行排列并等分成四份,第一分位数(Q1),第二分位数(Q2)和第三分位数(Q3)...

多组独立(完全随机设计)样本秩和检验的SPSS操作教程及结果解读

作者/风仕在上一期,我们已经讲完了两组独立样本秩和检验的SPSS操作教程及结果解读,这期开始讲多组独立样本秩和检验,我们主要从多组独立样本秩和检验介绍、两组独立样本秩和检验使用条件及案例的SPSS操作...

方差分析 in R语言 and Excel(方差分析r语言例题)

今天来写一篇实际中比较实用的分析方法,方差分析。通过方差分析,我们可以确定组别之间的差异是否超出了由于随机因素引起的差异范围。方差分析分为单因素方差分析和多因素方差分析,这一篇先介绍一下单因素方差分析...

可视化:前端数据可视化插件大盘点 图表/图谱/地图/关系图

前端数据可视化插件大盘点图表/图谱/地图/关系图全有在大数据时代,很多时候我们需要在网页中显示数据统计报表,从而能很直观地了解数据的走向,开发人员很多时候需要使用图表来表现一些数据。随着Web技术的...

matplotlib 必知的 15 个图(matplotlib各种图)

施工专题,我已完成20篇,施工系列几乎覆盖Python完整技术栈,目标只总结实践中最实用的东西,直击问题本质,快速帮助读者们入门和进阶:1我的施工计划2数字专题3字符串专题4列表专题5流程控制专题6编...

R ggplot2常用图表绘制指南(ggplot2绘制折线图)

ggplot2是R语言中强大的数据可视化包,基于“图形语法”(GrammarofGraphics),通过分层方式构建图表。以下是常用图表命令的详细指南,涵盖基本语法、常见图表类型及示例,适合...

Python数据可视化:从Pandas基础到Seaborn高级应用

数据可视化是数据分析中不可或缺的一环,它能帮助我们直观理解数据模式和趋势。本文将全面介绍Python中最常用的三种可视化方法。Pandas内置绘图功能Pandas基于Matplotlib提供了简洁的绘...

Python 数据可视化常用命令备忘录

本文提供了一个全面的Python数据可视化备忘单,适用于探索性数据分析(EDA)。该备忘单涵盖了单变量分析、双变量分析、多变量分析、时间序列分析、文本数据分析、可视化定制以及保存与显示等内容。所...

统计图的种类(统计图的种类及特点图片)

统计图是利用几何图形或具体事物的形象和地图等形式来表现社会经济现象数量特征和数量关系的图形。以下是几种常见的统计图类型及其适用场景:1.条形图(BarChart)条形图是用矩形条的高度或长度来表示...

实测,大模型谁更懂数据可视化?(数据可视化和可视化分析的主要模型)

大家好,我是Ai学习的老章看论文时,经常看到漂亮的图表,很多不知道是用什么工具绘制的,或者很想复刻类似图表。实测,大模型LaTeX公式识别,出乎预料前文,我用Kimi、Qwen-3-235B...

通过AI提示词让Deepseek快速生成各种类型的图表制作

在数据分析和可视化领域,图表是传达信息的重要工具。然而,传统图表制作往往需要专业的软件和一定的技术知识。本文将介绍如何通过AI提示词,利用Deepseek快速生成各种类型的图表,包括柱状图、折线图、饼...

数据可视化:解析箱线图(box plot)

箱线图/盒须图(boxplot)是数据分布的图形表示,由五个摘要组成:最小值、第一四分位数(25th百分位数)、中位数、第三四分位数(75th百分位数)和最大值。箱子代表四分位距(IQR)。IQR是...

[seaborn] seaborn学习笔记1-箱形图Boxplot

1箱形图Boxplot(代码下载)Boxplot可能是最常见的图形类型之一。它能够很好表示数据中的分布规律。箱型图方框的末尾显示了上下四分位数。极线显示最高和最低值,不包括异常值。seaborn中...