Цветовые кодовые точки на основе процентиля в ggplot

У меня есть несколько очень больших файлов, которые содержат геномную позицию (положение) и соответствующую популяционную генетическую статистику (значение). Я успешно нанес на график эти значения и хотел бы обозначить цветом верхние 5% (синий) и 1% (красный) значений. Мне интересно, есть ли простой способ сделать это в R.

Я исследовал написание функции, которая определяет квантили, однако многие из них оказываются не уникальными и, таким образом, вызывают сбой функции. Я также изучил stat_quantile, но добился успеха в использовании этого для построения линии, обозначающей 95% и 99% (и некоторые линии были диагоналями, которые не имели никакого смысла для меня.) (Извините, я новичок в Р.)

Любая помощь приветствуется.

Вот мой код: (файлы очень большие)

########Combine data from multiple files
fst <- rbind(data.frame(key="a1-a3", position=a1.3$V2, value=a1.3$V3), data.frame(key="a1-a2", position=a1.2$V2, value=a1.2$V3), data.frame(key="a2-a3", position=a2.3$V2, value=a2.3$V3), data.frame(key="b1-b2", position=b1.2$V2, value=b1.2$V3), data.frame(key="c1-c2", position=c1.2$V2, value=c1.2$V3))


########the plot
theme_set(theme_bw(base_size = 16))

p1 <- ggplot(fst, aes(x=position, y=value)) + 
  geom_point() + 
  facet_wrap(~key) +
  ylab("Fst") + 
  xlab("Genomic Position (Mb)") +
  scale_x_continuous(breaks=c(1e+06, 2e+06, 3e+06, 4e+06), labels=c("1", "2", "3", "4")) +
  scale_y_continuous(limits=c(0,1)) +
  theme(plot.background = element_blank(),
    panel.background = element_blank(),
    panel.border = element_blank(),
    legend.position="none",
    legend.title = element_blank()
    )
p1

Ответы на вопрос(3)

Ваш ответ на вопрос