Skip to main content
v2026.11,858 entries · CC-BY 4.0
LAC HealthMedical & Research SuppliesReagents, PPE & instruments — chain-of-custody documented.Fast, traceable sourcing built for regulated research environments, from bench consumables to instrumentation.Shop lac.us CodeCASRAIlac.us

Manhattan Plot in GWAS: How to Read It, What Each Dot Means, and How to Make One

What each dot on a Manhattan plot means, how -log10(p) heights work with worked numbers, how to read peaks and Q-Q plots, and how to make one in R.

Written and maintained by CASRAI Editorial Board

Last updated

A Manhattan plot is a scatter plot of genome-wide association study (GWAS) results. Each dot is one genetic variant (usually a SNP), placed left to right by its position along the chromosomes and up the page by the strength of its association with a trait, shown as the negative base-10 logarithm of its p-value. Variants with the smallest p-values therefore appear as the tallest dots, and clusters of tall dots look like skyscrapers over a flat skyline.

What does each dot on a Manhattan plot represent?

Each dot represents a single variant tested for association with the phenotype. Its horizontal position is its chromosomal location (chromosomes are laid end to end, usually in alternating colours), and its height is −log10(p). A tall dot means a small p-value, that is, stronger statistical evidence of association between that variant and the trait. In the R package qqman, the plotting function documents that the −log10 of the p-value is what is plotted by default, and that SNPs below a chosen p-value can be annotated with labels (qqman manual, CRAN).

Neighbouring variants are correlated through linkage disequilibrium, so one true signal usually produces a tower of several tall dots rather than a single spike.

What is the p-value in GWAS?

In a GWAS, the p-value for a variant is the probability of seeing an association at least as strong as the one observed if that variant had no true association with the trait. One such test is run per variant, so a study can run hundreds of thousands to millions of tests. See the p-value definition for the general concept, and genome-wide significance thresholds for why a single-test cut-off of 0.05 is not used.

The formula: why plot −log10(p)?

The plotted height is:

y = −log10(p)

  • p: the association p-value for one variant (between 0 and 1).
  • log10: the base-10 logarithm, so each increase of 1 on the y-axis is a tenfold smaller p-value.
  • The minus sign: p-values below 1 have negative logarithms; the sign flip makes smaller p-values plot higher.

FinnGen’s documentation describes the same layout: chromosomal positions on the x-axis, −log10(p) on the y-axis, with the smallest p-values at the highest points.

Worked example: converting p-values to heights

p-value Arithmetic Height on the plot
0.05 −log10(0.05) = −(−1.301) 1.30
1 × 10-5 −(−5) 5.00
5 × 10-8 8 − log10(5) = 8 − 0.699 7.30
2 × 10-9 9 − log10(2) = 9 − 0.301 8.70

The conventional genome-wide line sits at 5 × 10-8, which is a Bonferroni-style correction: 0.05 divided by roughly one million independent tests is 0.05 / 1,000,000 = 5 × 10-8, and −log10(5 × 10-8) = 7.30. The qqman manhattan() defaults draw two lines: a “suggestive” line at −log10(1e-05) (height 5) and a genome-wide line at −log10(5e-08) (height 7.30). The reasoning behind both thresholds is covered in Genome-Wide Significance Thresholds in GWAS; the general correction is explained in Bonferroni correction and multiple comparisons.

In the example, a variant at p = 2 × 10-9 (height 8.70) clears the genome-wide line; a variant at p = 3 × 10-6 (height 5.52) clears only the suggestive line.

How to read a Manhattan plot

What you see What it usually indicates
A tower of several dots above the genome-wide line at one locus A candidate association region; nearby variants are correlated through linkage disequilibrium, so they rise together.
A single isolated dot far above its neighbours Worth checking for genotyping or quality-control problems before interpreting it as a real signal, because a true signal normally brings correlated neighbours with it.
Dots between the suggestive and genome-wide lines Suggestive evidence only; the GWAS Catalog uses p < 1 × 10-5 as an inclusion threshold and states it is not intended to define genome-wide significance.
Nothing above the lines No variant reached significance at this sample size; the plot does not show that no associations exist.
The whole skyline lifted, not just a few peaks Possible inflation (for example from population structure); check the Q-Q plot and lambda.

The companion Q-Q plot and lambda

Manhattan plots are normally read alongside a quantile-quantile (Q-Q) plot of the same p-values. FinnGen’s documentation explains that deviation of the Q-Q points from the diagonal indicates associated loci, points above the line indicate inflation and points below it deflation. The genomic inflation factor lambda is the median observed chi-square statistic (1 degree of freedom) divided by its expected value of about 0.456 (0.455 in some sources); FinnGen advises a lambda above 1.0 and below roughly 1.5. In qqman, qq() draws the Q-Q plot. For controlling false discoveries across many tests more broadly, see q-values and false discovery rate.

Assumptions and common mistakes

  • Plotting raw p-values. The plot is meaningless without the −log10 transform (qqman’s logp argument controls it and defaults to TRUE).
  • Treating 5 × 10-8 as universal. It is a convention tied to roughly one million independent common-variant tests; designs with other numbers of effective tests may justify other thresholds.
  • Reading height as effect size. Height shows statistical evidence, which depends on sample size and allele frequency; it does not show how large the effect is.
  • Treating the tallest dot as the causal variant. Correlated neighbours share the signal; fine-mapping is a separate step.
  • Chromosome order and labelling. Chromosomes must be coded numerically and sorted for the x-axis to be meaningful; qqman’s chrlabs argument sets custom labels such as X and Y.
  • Confusing it with other genome figures. See the FAQ below.

How to report a Manhattan plot

State the trait, sample size, test and covariates, the threshold drawn (and why), the number of variants tested, and lambda. An example sentence in APA style for the results text:

Association results are shown in Figure 1. Variants were tested for association with the trait under an additive model; the genome-wide significance threshold was p < 5 × 10-8 and the suggestive threshold p < 1 × 10-5. The genomic inflation factor was λ = 1.03.

The lambda value in this sentence is a placeholder to show format, not a result. Figure captions should say what each axis shows and what the horizontal lines mean. For general reporting conventions for p-values, see how to report p-values.

How to make a Manhattan plot in R, Python or Excel

R (qqman)

install.packages("qqman")library(qqman)manhattan(gwasResults)        # built-in example dataqq(gwasResults$P)             # companion Q-Q plot

Input needs columns for chromosome (CHR), base-pair position (BP), SNP name (SNP) and p-value (P). Defaults draw the suggestive and genome-wide lines described above.

Python (matplotlib)

import numpy as npimport matplotlib.pyplot as plt# df has columns: chr (int), pos (int), p (float)df = df.sort_values(["chr", "pos"]).reset_index(drop=True)df["y"] = -np.log10(df["p"])colors = ["#1f4e79", "#7f7f7f"]for i, (chrom, g) in enumerate(df.groupby("chr")):    plt.scatter(g.index, g["y"], s=4, color=colors[i % 2])plt.axhline(-np.log10(5e-8), color="red")plt.axhline(-np.log10(1e-5), color="blue", linestyle="--")plt.xlabel("Chromosome (variants in genomic order)")plt.ylabel("-log10(p)")plt.show()

Excel

Excel has no built-in Manhattan chart. Sort rows by chromosome then position, add a column with =-LOG10(C2) (where C holds the p-value), and insert a scatter chart of row number against that column. Add the threshold lines as extra series at 7.30 and 5.

Frequently asked questions

What does a circo plot show?

A circos (circular) plot arranges chromosomes around a circle and draws tracks or links between positions, so it can display many layers of genome data at once. It is a different figure from a Manhattan plot, which is a linear scatter plot of association strength; some papers show Manhattan results as a circular track, but the y-axis is still −log10(p).

What is a chromosome map called?

A picture of chromosomes with features marked along them is commonly called an ideogram. The GWAS Catalog’s Diagram is of this kind: each coloured circle marks a trait association on the chromosome map. The GWAS Catalog FAQ states that it does not currently provide Manhattan plots; it offers locus-level views such as LocusZoom and linkage disequilibrium plots instead.

Is a Manhattan plot the same as a Q-Q plot?

No. The Manhattan plot shows where in the genome associations occur; the Q-Q plot compares the distribution of all observed p-values with the distribution expected under no association, and is used to detect inflation.

What does a Manhattan plot of SNPs look like?

A band of dots across the chromosomes, mostly low, with occasional towers where a locus is associated with the trait. A plot with no towers above the genome-wide line is a valid result.

Sources

  • qqman: Q-Q and Manhattan Plots for GWAS Data, CRAN reference manual and README (https://cran.r-project.org/web/packages/qqman/qqman.pdf), read 2026-11-07.
  • NHGRI-EBI GWAS Catalog, Frequently Asked Questions (https://www.ebi.ac.uk/gwas/docs/faq), read 2026-11-07.
  • FinnGen documentation, What are QQ and Manhattan plots (https://docs.finngen.fi/faq/about-pheweb/what-are-qq-and-manhattan-plots), read 2026-11-07.

Follow CASRAI

Research-administration guidance, standards updates and independent tool reviews.

Ask CASRAI · free to try

Ask about Manhattan Plot in GWAS: How to Read It, What Each Dot Means, and How to Make One

Ask your first 2 questions free below. Subscribers get 150 a day for $29 a month.

An AI assistant specialized in research administration. It cites the sources behind every answer, labels web answers and says when it can't answer.

Answers draw on CASRAI's guides and dictionary plus the federal and funder documents we index: Federal Register, Grants.gov, Regulations.gov and UKRI.

Works on this site and inside Claude, Cursor and the AI tools you already use.

Everything CASRAI publishes — this page, the dictionary, the guides and the news — stays free to read, with no account and no card.

Referenced across the research world

University of Cambridge logoColumbia University logoCrossref logoUniversity of Edinburgh logoHarvard University logoUniversity of Oxford logoPrinceton University logoStanford School of Medicine logoUniversity College London logoORCID logoUniversity of Cambridge logoColumbia University logoCrossref logoUniversity of Edinburgh logoHarvard University logoUniversity of Oxford logoPrinceton University logoStanford School of Medicine logoUniversity College London logoORCID logo
  • University of Cambridge logo
  • Columbia University logo
  • Crossref logo
  • University of Edinburgh logo
  • Harvard University logo
  • University of Oxford logo
  • Princeton University logo
  • Stanford School of Medicine logo
  • University College London logo
  • ORCID logo

View CASRAI adoption →