R数据可视化12:曼哈顿图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R数据可视化12:曼哈顿图相关的知识,希望对你有一定的参考价值。

参考技术A

曼哈顿图是一种散点图,通常用于显示具有大量数据点,许多非零振幅和更高振幅值分布的数据。该图通常用于全基因组关联研究(GWAS)以显示重要的SNP(来源wiki)。

在图中每个点代表一个SNP,纵轴为每个SNP计算出来的Pvalue取-log10,横轴为SNP所在的染色体。基因位点的Pvalue越小即-log10(Pvalue)越大,其与表型性状或疾病等关联程度越强。而且通常来说受到连锁不平衡的影响,强关联位点周围的SNP也会显示出相对较高的信号强度,并依次向两边递减,所以会出现上图中红色部分的现象。一般,在GWAS的研究中,Pvalue的阈值在10^-6 或者10^-8以下。(现在可能要求更高了?好久没看过文章)

用于做曼哈顿图最常用的一个R包叫做qqman——an R package for creating Q-Q and manhattan plots。本文我们直接使用该包中的例子进行讲解(毕竟我也没有可以绘图的GWAS数据哈哈哈)。没有安装的可以先输入 install.packages("qqman") 安装该包。当然qqman包由于是为曼哈顿图服务所以其实有很多限制,如果想要完全DIY我们可以使用ggplot。本文将会介绍使用这两个R包进行绘图。
下述内容来源于 Manhattan plot in R: a review ,我只是一个搬运工。

1)需要什么格式的数据
qqman提供的数据例子很直接就叫做"gwasResults",数据格式如下:

第一列为SNP的名字,第二列CHR为所在染色体,第三列BP为染色体上所在位置。要注意如果你的CHR中存在X,Y这样的,需要给他们转化为数字如赋予23,24等,其中第一列SNP的名字是可选择的,后三列是必须提供的。

2)如何作图
利用 manhattan 函数即可作出相应的曼哈顿图。

如果你想要标记其中一系列你感兴趣的SNP,怎么办呢?给出你感兴趣的snpsOfInterest列表即可。

如果你想知道每条染色体上pvalue最小的SNP,你可以通过下述方式:

如果不喜欢黑色和灰色的搭配,也可以自行改变颜色。

那么使用ggplot要如何作图呢?

don是用于作图的主要数据表,而axisdf是用于处理x轴,因为我们想要他们按照染色体的位置排布。上述数据处理完成后,我们就可以使用ggplot作图:

我们这里展示一下有无 scale_x_continuous( label = axisdf$CHR, breaks= axisdf$center ) 的差异,可以看到x轴的变化

那么如果想要把某些SNP标记出来呢?那么我们在前期处理数据的时候需要将这些数据标记出来,这个过程和之前火山图标记显著的基因很类似:

然后画图的时候geom_point在颜色上进行区分,并使用geom_label_repel标注出来即可:

那么,关于曼哈顿图的分享就到这里啦。

往期R数据可视化分享
R数据可视化11: 相关性图
R数据可视化10: 蜜蜂图 Beeswarm
R数据可视化9: 棒棒糖图 Lollipop Chart
R数据可视化8: 金字塔图和偏差图
R数据可视化7: 气泡图 Bubble Plot
R数据可视化6: 面积图 Area Chart
R数据可视化5: 热图 Heatmap
R数据可视化4: PCA和PCoA图
R数据可视化3: 直方/条形图
R数据可视化2: 箱形图 Boxplot
R数据可视化1: 火山图

R语言使用ggradar包可视化基本雷达图(radar chart蜘蛛图spider plot)可视化单个数据对象的雷达图

R语言使用ggradar包可视化基本雷达图(radar chart、蜘蛛图spider plot)、可视化单个数据对象的雷达图

目录

以上是关于R数据可视化12:曼哈顿图的主要内容,如果未能解决你的问题,请参考以下文章

R语言可视化:MA散点图绘制

R 数据可视化 —— 韦恩图

R语言之数据可视化

R数据可视化16:哑铃图

第三篇:R语言数据可视化之条形图

数据可视化应用绘制和弦图(附Python和R语言代码)