我有一个从运行 GWAS 的输出得出的数据帧。每行都是基因组中的一个 SNP,及其染色体、位置和 P 值。从这个数据框中,我想生成一个曼哈顿图,其中 x 轴从 Chr 1 上的第一个 SNP 到 Chr 5 上的最后一个 SNP,y 轴是 -log10(P.value)。为此,我生成了一个索引列,以沿着 x 轴以正确的顺序绘制 SNP,但是,我希望 x 轴由染色体列而不是索引来标记。不幸的是,我无法使用染色体来绘制 x 轴,因为任何给定染色体上的所有 SNP 都将绘制在单列点中。
这是一个可以使用的示例数据框:
library(tidyverse)
df <- tibble(Index = seq(1, 500, by = 1),
Chromosome = rep(seq(1, 5, by = 1), each = 100),
Position = rep(seq(1, 500, by = 5), 5),
P.value = sample(seq(1e-5, 1e-2, by = 1e-5), 500, replace = TRUE))
到目前为止我所掌握的情节:
df %>%
ggplot(aes(x = Index, y = -log10(P.value), color = as.factor(Chromosome))) +
geom_point()
我尝试过使用scale_x_discrete选项,但无法找到解决方案。
这是我在网上找到的曼哈顿图的一个例子。看看 x 轴是如何根据染色体来标记的?这就是我想要的输出。