Visualization VocabularyDataviz vocabulary
Diagram: Manhattan plot
Drawing: Adrien Taudière (CC0)
ggplot2 example: Manhattan plot
Adrien Taudière (CC0); R code ↓; data: Simulated data, via qqman (Turner 2018) (GPL)

chart

Manhattan plot

Significance of thousands of tests laid out along a genomic position.

Classification

  • chart
  • points and bubbles › scatterplots
  • distribution
  • the name evokes: building

Channels

Scientific literature

OpenAlex: 622 papers since 2010, 54% in the last five years; mostly in Biochemistry, Genetics and Molecular Biology, Medicine, Agricultural and Biological Sciences; Wikidata

R packages

R code of the ggplot2 example

library(ggplot2)
library(dplyr)
library(qqman)

## Simulated association tests along 22 chromosomes, one point per SNP,
## laid end to end; the line marks genome-wide significance (p = 5e-8).
snps <- gwasResults |>
  arrange(CHR, BP) |>
  mutate(position = row_number(), hit = P < 5e-8,
         shade = ifelse(hit, "hit", ifelse(CHR %% 2 == 0, "even", "odd")))
centres <- snps |>
  group_by(CHR) |>
  summarise(centre = mean(position))

p <- ggplot(snps, aes(x = position, y = -log10(P), colour = shade)) +
  geom_hline(yintercept = -log10(5e-8), colour = "#535353", linewidth = 0.3, linetype = "dashed") +
  geom_point(data = filter(snps, !hit), size = 0.5) +
  ## Significant SNPs: black outline, half-transparent fill.
  geom_point(data = filter(snps, hit), shape = 21, size = 1.6, colour = "black",
             fill = scales::alpha("#9b2367", 0.5), stroke = 0.4) +
  scale_colour_manual(values = c(odd = "#a6a6a6", even = "#535353", hit = "#9b2367"), guide = "none") +
  scale_x_continuous(breaks = centres$centre[c(1:10, seq(12, 22, 2))],
                     labels = centres$CHR[c(1:10, seq(12, 22, 2))], expand = expansion(add = 50)) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.05))) +
  labs(title = "Six SNPs on chromosome 3 pass genome-wide significance",
       subtitle = "Simulated association study of 16 470 SNPs; dashed line at p = 5 × 10⁻⁸",
       x = "Chromosome", y = expression(-log[10](italic(p))),
       caption = "Data: simulated GWAS results, via the qqman R package") +
  theme_lex_viz(grid = "y", arrows = "y")

Sources (2)

Cite this entry

Stable addresshttps://dataviz.adrientaudiere.com/en-only/term/manhattan-plot.html

ReferenceTaudière Adrien. 2026. Manhattan plot. In Visualization Vocabulary, version 1.0.0. IdEst. https://dataviz.adrientaudiere.com/en-only/term/manhattan-plot.html

BibTeX
@incollection{taudiere2026-manhattan-plot,
  author    = {Taudière, Adrien},
  title     = {Manhattan plot},
  booktitle = {Visualization Vocabulary},
  year      = {2026},
  version   = {1.0.0},
  publisher = {IdEst},
  url       = {https://dataviz.adrientaudiere.com/en-only/term/manhattan-plot.html},
  note      = {CC0 1.0}
}

Page created on 2026-10-13. Text last changed on 2026-11-02. Images last changed on 2026-11-12. Numbers computed on 2026-10-22.